摘 要:通過對語言程序設(shè)計類課程教學和學生學習的種種觀察,發(fā)現(xiàn)了一些問題和不方便之處,又對發(fā)現(xiàn)的問題和不方便作了綜合分析,采取了Online Judge、ACM/ICPC與課程教學的發(fā)展方向。實踐表明,該模式有效的提高學生的水平,改善學生語言類課程的設(shè)計思想,促進學生提高了自己的程序設(shè)計能力。
關(guān)鍵詞:Online Judge;ACM/ICPC;課程改革
中圖分類號:TP391.6
Online Judge系統(tǒng)(簡稱OJ)是一個在線的判題系統(tǒng)。用戶可以在線提交程序多種程序(如C、C++、Pascal)源代碼,系統(tǒng)對源代碼進行編譯和執(zhí)行,并通過預(yù)先設(shè)計的測試數(shù)據(jù)來檢驗程序源代碼的正確性?,F(xiàn)如今,大多數(shù)學校都研發(fā)了自己的Online Judge 平臺,并且將Online Judge平臺與大一大二語言基礎(chǔ)教學相融合。用戶可以在線提交程序多種程序(如C、C++、Pascal)源代碼,系統(tǒng)對源代碼進行編譯和執(zhí)行,并通過預(yù)先生成好的測試數(shù)據(jù)來檢驗程序代碼的正確性和通過耗時,占用內(nèi)存評測算法的優(yōu)劣。
最初Online Judge使用于ACM/ICPC競賽隊員的訓(xùn)練和選拔,現(xiàn)在更多的學校將其發(fā)展到日常教學任務(wù)之中:讓學習語言的學生在Online Judge上進行平日的訓(xùn)練和考試。
1 現(xiàn)有程序設(shè)計類課程教學存在問題
目前,現(xiàn)有的程序設(shè)計類課程仍然存在很多未被解決的問題,大致分為以下幾個方面。
1.1 課程教學方式未發(fā)生改變
目前,程序設(shè)計類課程還是沿用“教師講授,學生被動接受”的教學形式,對于學生來說,沒有足夠的實踐機會,只能上課理解教師的講課。程序設(shè)計類課程比較抽象,而且層層加深,前后聯(lián)系緊密。此種教學方式,只會讓學生被動的接受知識。這種傳統(tǒng)的教學方式,扼殺了學生的學習激情和創(chuàng)作興趣,限制了教師與學生的互動。同時,也限制了學生的創(chuàng)造力和想象力,減少了學生自主學習的意識。
1.2 考試方式及考試平臺差異
現(xiàn)在各大高校的程序設(shè)計類考試分為筆試和上機兩種,筆試這種考試方法只能考察一部分重點、難點基礎(chǔ)知識,不能做到對于知識點的全方位考核以及綜合型的考察。而上機考試,由于題庫的稀少,和語言不通,現(xiàn)有高??荚嚻脚_只能對于C/C++語言進行編譯執(zhí)行,而且,不是ACM判題模式,只能課程使用。況且,對于C++和JAVA的面向?qū)ο蟮闹R不能夠類似于C語言程序設(shè)計考核方式一樣只是用簡單的程序化設(shè)計語句寫成.exe程序并執(zhí)行,面向?qū)ο蟮恼n堂設(shè)計作業(yè)需要不同形式的考察方式。
1.3 實踐教學未有綜合型的實驗考察
一方面:現(xiàn)有的課程實踐環(huán)節(jié),尤其是程序設(shè)計類的課程實踐環(huán)節(jié),目前還停留在讓學生按照簡單的題目要求,通過對于書上的源代碼進行機械的輸入和修改,并運行程序進行驗證答案是否正確。這樣學生只是變成了單純的打字員、碼農(nóng)。而不能提高學生的自主學習能力和創(chuàng)新實力。讓學生失去了學習語言的樂趣和設(shè)計實驗的動手能力,錯失了學習語言、提高編程能力的大好時光。
另一方面:現(xiàn)普遍課程實踐環(huán)節(jié)跟課堂教學內(nèi)容息息相關(guān),主要是根據(jù)課堂教學的進度對于章節(jié)內(nèi)容的考點、重點和難點幾個單獨的知識點行考核。這種形式的實驗環(huán)節(jié)難免存在漏洞,而忽略了對課程內(nèi)容的整體把握,容易造成學生基礎(chǔ)不牢和對于解決大問題方面基礎(chǔ)的薄弱。
1.4 忽略團隊協(xié)作能力的培養(yǎng)
程序設(shè)計類課程主要考察學生對于知識的理解和運用,主要是采取對于每一位學生都進行實驗和期末考試的考核,忽略了對于團隊合作意識以及協(xié)作能力的培養(yǎng)。而ACM/ICPC、智能機器人大賽等學科競賽在不僅僅考察個人知識素養(yǎng)的同時,更注重團隊合作的重要性。而團隊合作,在學生畢業(yè)以后的工作以及學習中都是必不可少的重要品行。以往的教學雖然在教學過程中鼓勵學生采用分組討論的方式進行,但由于個別學生的知識水平參差不齊,每組可能是由1~2名學生包攬了幾乎所有實質(zhì)性的工作,而其他學生只是旁聽學習,沒有真正做到團隊協(xié)作式的工作。那么,學生參加工作后就會缺失團隊意識這一基本的職業(yè)素養(yǎng),給未來的工作造成影響。
2 Online Judge在線評測平臺推動程序設(shè)計類課程改革
根據(jù)以上程序設(shè)計類課程存在的幾點弊端和問題,借鑒ACM/ICPC形式的優(yōu)點,課程改革應(yīng)該從以下幾個方面進行入手:
2.1 變更教學組織方式以及教學過程
程序設(shè)計類課程在學生課堂學習過程中,不僅僅需要聽教師進行講課,還要對教材上的例題有所了解并且會做到會看懂代碼、會驗證代碼、會修改代碼、會編寫代碼這“四會”。教師更應(yīng)該讓學生更多接觸實踐環(huán)節(jié),在實踐中學習如何設(shè)計代碼并實現(xiàn)。
目前教學組織方式主要以個人為主,教師對于每一位學生進行分離式教育,旨在考察每一個人的知識掌握水平。好處在于更能夠提高單個人的水平,弊端在于忽略了團隊協(xié)作的重要性。
ACM/ICPC是以3人為一隊的形式進行參賽,不僅僅對于每一位隊員的水平進行苛刻的要求,更注重于三人之間的配合與默契。三人分工優(yōu)秀,則可取得1+1+1>3的效果,相反,如果彼此之間配合失常,就容易造成成績不理想。
我們將其模式通過分析,將其試用于C++面向?qū)ο蠼虒W中,以3~5人為一小組,讓小組內(nèi)部進行需求分析與編寫代碼,而后實踐解決問題。通過小組內(nèi)的討論和研究,拿出滿意的方案,既能促進學生學習熱情,又能培養(yǎng)學生團隊協(xié)作能力。
2.2 課堂教學添加ACM/ICPC元素
對于傳統(tǒng)的C/C++教學方式,還存在著過于注重語法和細節(jié)方面。教學目標旨在教會學生如何運用C/C++寫一份針對于特定題目的代碼即可,并不能考察學生的綜合應(yīng)用能力和小組協(xié)作執(zhí)行項目的能力。而且函數(shù)庫中的函數(shù)對于函數(shù)規(guī)則描寫的十分清楚,不需要學生動腦去思考更多,抑制學生的思維能力和創(chuàng)造力。而現(xiàn)實的項目中,客戶往往給出模糊的需求目標,這需要程序員具有很強的分析能力,抽象和調(diào)整能力。常規(guī)教學并不能給予學生這方面的培訓(xùn),從而讓很多學生在真正的處理問題時很棘手。
為此,教學中應(yīng)加入ACM/ICPC的培養(yǎng)方式,推出新的教學方式,推動學生進行案例式的學習以及思考。讓學生從題目的需求出發(fā),構(gòu)建合理的數(shù)據(jù)結(jié)構(gòu),進行具體細節(jié)的分析和具象,從而得出正確的解決方案。真正讓學生主動的學習起來,從被動接受知識的傳統(tǒng)教學方式中解脫出來,通過對語法和細節(jié)的真正掌握,在實踐中解決問題,學習知識。
2.3 實踐環(huán)節(jié)平臺的完善
傳統(tǒng)課堂教學教師在講課的同時,布置一些編程題作為作業(yè),在下次教學中檢查學生的學習進度。這種方式缺乏規(guī)范性和嚴謹性,容易造成教學盲點。
在教學中引入Online Judge在線評測平臺能幫助學生建立標準,規(guī)范學習化進度考察。通過學生在平臺上進行考試和平時測試,達到學習進度與學生學習技能掌握程度的緊密結(jié)合,促進學生規(guī)范化考試,杜絕測驗和考試時舞弊行為。
通過對現(xiàn)有平臺的修改和整理,推出伴隨Online Judge在線評測平臺的教學體系,并引入至C++課程之中,有助于提高學生對于真實項目的認知,以及對于規(guī)范化概念的理解。
教師可以實時查看學生的做題結(jié)果、競賽排名、做題用時等,還可以查看每個學生提交的時間順序,幫助教師針對普遍問題進行講解,甚至可以對學生提交的程序進行雷同判斷,以防學生在競賽時抄襲其他同學的程序。
3 結(jié)束語
基于ACM/ICPC形式與Online Judge的語言程序類課堂改革,目的是幫助學生將知識與實踐相結(jié)合,在日常中注重學生的動手能力,激發(fā)學生的學習激情、競爭性和團隊合作能力,提高學生的學習效率,發(fā)揮學生的潛能,培養(yǎng)學生的創(chuàng)新思想。對于傳統(tǒng)教學體系的課程改革,還需要從教學體制入手,對于課堂教學模式需要與時俱進,借鑒學科競賽中優(yōu)異的部分加入課堂教學中。我們采用課堂教學與Online Judge在線評測平臺相結(jié)合的方式,能夠有效促進教學水平的提升,并產(chǎn)生了顯著的教學效果。
參考文獻:
[1]王娟.基于OnlineJudge的高級語言程序設(shè)計課程教學改革[J].吉林省教育學院學報(上旬),2012.
[2]陳榮欽,胡永良,應(yīng)建健,郭賢海.在線評測系統(tǒng)中的源碼相似度檢測研究與實現(xiàn)[J].實驗技術(shù)與管理,2014.
作者單位:北京信息科技大學,北京 100085