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