周銘
【摘 要】實踐教學是程序設計課程的重要組成部分。詳細探討了在線評測系統(tǒng)在程序設計實踐教學中的改革與應用,該系統(tǒng)引導學生自覺和自主地進行程序實踐,培養(yǎng)學生的學習興趣、提高學生的自學和創(chuàng)新能力,在很大程度上提高了教師的教學效率和教學質量。
【關鍵詞】程序設計;實踐教學;在線評測
0 引言
程序設計課程的目的是培養(yǎng)學生掌握基本的程序設計思想和方法,并使學生具備一定的程序設計能力。程序設計課程是一門實踐性很強的課程,實踐教學是其中一個重要環(huán)節(jié)。程序設計能力最終要體現學生針對問題能夠設計、實現和調試程序,要求學生在學習期間能夠將實踐順利地進行下去,常見問題是,學生掌握了C++語法的細節(jié),但處理實際問題的能力較弱;偏重考試成績,動手能力欠缺;而實踐不足也常是學習效果不佳的主要原因。
目前,多數高校程序設計課程的實踐教學通常是由老師布置題目,學生編寫程序,由老師來評判程序的正確與否。這種形式的實踐教學既缺乏激勵機制,難以引起學生的興趣;又因為需要人工評判程序,評判結果不及時且?guī)в兄饔^性,難以調動學生的學習積極性。教師手工評閱程序和指導學生實驗是一項繁重的工作。
程序設計競賽的廣泛開展和OJ(Online Judge,在線評測)網站的涌現給程序設計課程提供了一種新的實踐教學方法。我們在實踐課上根據教學的需要選取國內外著名OJ網站上的試題作為例題、討論題、練習題等,以培養(yǎng)學生獨立分析問題、解決問題的能力,以及分組討論、團隊協(xié)作、文檔組織等能力。學生在線提交程序,OJ網站的在線評測系統(tǒng)實時反饋評判結果。OJ網站上的試題一般都具有較強的趣味性和挑戰(zhàn)性,而且評判過程公正、評判結果反饋及時,能引起學生的極大興趣。在課程的最后階段,我們通過課程設計強化學生的學習效果,以及檢驗學生的程序實踐能力。
利用程序在線評測系統(tǒng)代替教師人工評測,不僅減輕了教師的工作負擔,實現了對學生編寫程序源代碼評測的自動化,而且促進了學生進行自主、自覺地學習和訓練,把枯燥的編寫代碼變成一種樂趣,幫助學生真正提高編程技能;還實現了作業(yè)及時、客觀、公正的評測。
1 在線評測系統(tǒng)的實踐
1.1 課下自主練習
任課教師可以根據實際情況,提供自己的POJ服務,加入自創(chuàng)的更貼近教學內容的練習題。學生在完成OJ網站上的題目時,程序正確與否完全由評判系統(tǒng)客觀地判定。學生編寫的程序即使通過了題目中給出的樣例輸入數據,也未必正確。為了驗證程序的正確性,學生必然要多擬一些測試數據進行測試。
ACM/ICPC題目對輸出要求是極其嚴格的,只要程序考慮不全面或者格式不對,程序就不可能通過。這種評判方式保證了評判結果客觀、公正。程序提交后,系統(tǒng)將給出程序提交結果。結果信息主要有: Accepted(接受)、Unaccepted(不接受)、Compile Error(編譯錯誤)、Wrong Answer(答案錯誤)、Runtime Error(運行錯誤)、Time Limit Exceeded(超時)等。學生在OJ上提交程序時,可以根據OJ系統(tǒng)反饋回來的評判結果反復修改程序,一直到最終收獲 AC(Accept,程序正確)。這個過程不僅能培養(yǎng)學生獨立分析問題、解決問題的能力,而且每成功解決一道題目都能給學生帶來極大的成就感。這種新穎的實踐形式能較大程度上引發(fā)學生的興趣。學生在掌握這些程序設計思想和方法后,可以完成OJ上一些簡單的題目,并從中獲得程序設計實踐的快樂和動力。
1.2 作業(yè)提交
批改作業(yè)對教師而言是一項繁重的工作,尤其是對程序設計課程.通常作業(yè)中的語法錯誤較容易檢查,而邏輯性錯誤則很難發(fā)現,需要對程序進行認真的分析,這使得教師的工作量大大增加?,F在班級人數都比較多,要做到能夠準確快速地判斷每一個學生設計出的程序的優(yōu)劣和是否抄襲,并給出合理的成績,教師通過人工的方式是很難完成的。教師在網上抽查學生作業(yè),及時發(fā)現問題,如代碼風格,算法、實現手段等,在線評測系統(tǒng)就能夠極大地減少教師花費在檢查學生代碼的正確性、算法性能、抄襲情況、作業(yè)的完成率和正確率統(tǒng)計方面的工作,使教師有更多的時間與學生交流和答疑,教師通過查看學生提交的代碼長度、執(zhí)行時間、占用內存值和提交時間等信息,能快速地發(fā)現代碼拷貝現象,同時通過觀察學生提交的正確的和錯誤的代碼,總結出一般性問題,在隨后的課堂上予以有針對性地講解,以達到更好的教學效果。
1.3 測驗考核
現在很多大學開設了OJ系統(tǒng),大部分學校都把系統(tǒng)放在網站上,同時對公眾開放。如:北京大學POJ現在擁有二十萬余用戶和將近四千道題,每個月都有月賽;杭州電子科技大學的HOJ具有公有和私有兩種類型的比賽,還提供DIY contest,可以讓用戶自己出題和授權來組織一次內部競賽;天津大學的TOJ具有Virtual Contests(虛擬競賽)板塊,它通過把歷年真實的現場比賽過程再現,使用戶可以親身感受到激烈的現場比賽。對于不具備相應硬件條件的學校,POJ也提供網上考試服務。OJ能夠方便地進行考核和組織競賽。將這種考核的平臺和形式貫穿于整個學習過程,對學生的全面提升作用顯著。
2 對實驗環(huán)節(jié)的改進
實驗教學在教學中所占的比例非常大,尤其是在學分制和開放式實驗教學的改革形勢下,更是培養(yǎng)創(chuàng)新性人才的重要手段。提高學生的程序實踐能力是程序設計課程的目標,我們基于以在線評測為導向的教學思路,通過重新設計這門課程的實踐教學內容,采用分組討論、習題講解、強化課程設計的方式,激發(fā)了學生的學習興趣,改變了傳統(tǒng)的教學模式,加強了學生的上機實踐能力,拓展了學生的知識面和學習能力,提高了C++的教學質量。
引入在線評測系統(tǒng)重在將程序設計的實踐有效進行下去,在學習過程中,培養(yǎng)學生興趣,建立考試標準之外的學習動機。他們在學習過程中可以互相討論交流,看到其他人對問題的解決方案,培養(yǎng)起來興趣,由此引出自信。
基于的教學模式符合教學型本科院校培養(yǎng)滿足社會需要、創(chuàng)新型、應用型人才的目標,可以培養(yǎng)團結協(xié)作、自主創(chuàng)新、開拓性思維人才,為傳統(tǒng)計算機程序設計類課程的教學模式、實驗室建設提出了改革思路。
【參考文獻】
[1]賀利堅,盧云宏.利用博客提交作業(yè)的程序設計課程實踐模式[J].計算機教育,2014(15):79-83.
[2]林巧,韓建民.基于在線評測系統(tǒng)的C語言實踐教學探討[J].實驗科學與技術,2011(06):37-39.
[3]張麗萍,劉東升,王春暉.程序設計類課程考核評價方法的改革與實踐[J].計算機教育,2010(02):17-20.
[4]劉晶,呂艷琳,李尤豐.基于ACM競賽平臺的程序設計課程教學模式改革的探索[J].江蘇教育學院學報:自然科學版,2010(06):73-75.
[責任編輯:劉展]