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