廖雪花 厲蘭潔 唐思娩
摘要:C語言程序設(shè)計(jì)實(shí)驗(yàn)課是學(xué)生練習(xí)和鞏固C語言知識、加強(qiáng)實(shí)踐動手能力鍛煉的機(jī)會,針對在實(shí)際教學(xué)中無法兼顧每位學(xué)生的問題,闡述Online Judge系統(tǒng)如何更好地實(shí)現(xiàn)智能評閱,促進(jìn)實(shí)驗(yàn)課更高效地進(jìn)行。
關(guān)鍵詞:Online Judge;C語言;實(shí)驗(yàn)課;教學(xué)改革
C語言程序設(shè)計(jì)是高校計(jì)算機(jī)相關(guān)專業(yè)的必修基礎(chǔ)課程,也是學(xué)生程序設(shè)計(jì)類的入門課程。C語言的掌握程度對學(xué)生后續(xù)計(jì)算機(jī)類專業(yè)課程的學(xué)習(xí)有很大的作用和影響。在實(shí)際教學(xué)過程中,實(shí)驗(yàn)課是學(xué)生獨(dú)立學(xué)習(xí)C語言進(jìn)行實(shí)地編程的機(jī)會,實(shí)驗(yàn)課的上機(jī)實(shí)驗(yàn),可幫助學(xué)生消化和鞏固課堂所學(xué)知識,也可幫助學(xué)生解決學(xué)習(xí)中的疑難問題,更重要的是可激發(fā)和提高學(xué)生學(xué)習(xí)C程序設(shè)計(jì)的興趣。因此,實(shí)驗(yàn)課如何更高效率地幫助學(xué)生學(xué)習(xí)是非常關(guān)鍵且必要的。在未進(jìn)行改革探究之前,實(shí)驗(yàn)課就是學(xué)生自主地完成實(shí)驗(yàn)報(bào)告,完成后一并上交老師批改。對于學(xué)生而言,做得對錯與否都無法第一時間得到反饋;對于教師而言,一個班級的批改量也極為巨大,需要耗費(fèi)不少時間,也無法針對每位同學(xué)做出反饋。這些無疑對C語言的學(xué)習(xí)和教學(xué)的推進(jìn)工作造成了一定的阻礙。
為此,在運(yùn)用SPOC平臺改進(jìn)C語言程序設(shè)計(jì)課程教學(xué)的同時充分利用平臺中的OnlineJudge智能評閱功能,能讓實(shí)驗(yàn)課發(fā)揮更大的效用。
1C語言程序設(shè)計(jì)實(shí)驗(yàn)課的教學(xué)現(xiàn)狀
一直以來,實(shí)驗(yàn)課就是學(xué)生獨(dú)立完成相應(yīng)實(shí)驗(yàn)報(bào)告的課時,這一期間有任課教師和帶機(jī)老師進(jìn)行輔導(dǎo)及檢查工作。在實(shí)驗(yàn)課上,教師們幾乎不停歇,因?yàn)榻鉀Q一個程序問題需要對學(xué)生進(jìn)行多方面的引導(dǎo),再加上檢查學(xué)生的實(shí)驗(yàn)報(bào)告成果也并非僅檢查程序的運(yùn)行結(jié)果,還需要考察學(xué)生是否真正掌握了這個知識點(diǎn)。雖然每次實(shí)驗(yàn)課上老師們已盡心竭力,但還是無法照顧到每位學(xué)生,依舊有學(xué)生的問題未得到輔導(dǎo)或解決。與學(xué)生的交流中,學(xué)生也反映這在一定程度上影響了他們對C語言程序設(shè)計(jì)的積極性。因此,急需一種方法幫助解決實(shí)驗(yàn)課上的這一問題。
2C語言程序設(shè)計(jì)實(shí)驗(yàn)課的改革探究
2.1Online Judge簡介
Online Judge在線測評系統(tǒng)(簡稱OJ系統(tǒng))是一個基于B/S結(jié)構(gòu)的在線程序與算法設(shè)計(jì)練習(xí)、考試平臺,能對學(xué)生用網(wǎng)頁瀏覽器提交到服務(wù)器的習(xí)題、作業(yè)等程序源代碼進(jìn)行在線編譯,生成可執(zhí)行文件,并從數(shù)據(jù)庫中調(diào)用測試數(shù)據(jù),從程序運(yùn)行的正確性、耗時、耗費(fèi)內(nèi)存及返回結(jié)果等各方面評測代碼,并精確反饋各方面的評測結(jié)果。在面向程序設(shè)計(jì)類課程的教學(xué)輔助方面,以PKU ACM Judge Online為代表的Online Judge系統(tǒng)能夠?qū)τ脩籼峤坏某绦蜻M(jìn)行“黑盒判定”來自動生成判題結(jié)果。
2.2Online Judge在實(shí)驗(yàn)課中的應(yīng)用
筆者在中國大學(xué)MOOC網(wǎng)站上開設(shè)了一門C語言程序設(shè)計(jì)課程的異步SPOC課程,平臺上的“測試與作業(yè)”板塊為實(shí)驗(yàn)課的開展提供了極大的便利,該板塊可以在課程后臺管理頁面中自由添加單元作業(yè)及作業(yè)題,作業(yè)題的錄入包括以下6個部分:選擇本題編程語言、題目錄入并設(shè)定題目分值、程序是否需輸入、題目內(nèi)容錄入、題目測試用例錄入、程序限制設(shè)置,如圖1~6所示。
為此,提前將實(shí)驗(yàn)報(bào)告中的試題在平臺上進(jìn)行錄入并設(shè)置分值及測試用例,待作業(yè)題成功發(fā)布之后,學(xué)生通過在相應(yīng)文本框中錄入C語言程序代碼,提交后OJ系統(tǒng)便會自動開始檢測。OJ系統(tǒng)主要通過學(xué)生提交的代碼能否順利通過之前設(shè)置的用例來判斷答案的正確與否。
實(shí)驗(yàn)課上,學(xué)生們在機(jī)房通過平臺上的OJ系統(tǒng)來智能評閱自己的代碼是否正確,以不斷進(jìn)行修正,測試不通過的用例,會在頁面上提示代碼可能存在的某一方面的問題,提醒學(xué)生認(rèn)真考慮編程時是否忽略了這一方面。OJ系統(tǒng)的智能評閱功能為教師和學(xué)生提供了極大的便利,極大解決了教師無法兼顧每位學(xué)生的局面。在實(shí)行為期一個學(xué)期的教學(xué)改革之后,學(xué)生對此次應(yīng)用OJ系統(tǒng)來測評作業(yè)、習(xí)題,以及階段考試的改革頗為滿意,對編程有了濃厚的興趣,對所學(xué)課程知識也有了很好的理解和掌握。
2.3Online Judge在應(yīng)用中的注意事項(xiàng)
Online Judge在線測評系統(tǒng)在C語言程序設(shè)計(jì)實(shí)驗(yàn)課中發(fā)揮了很大的作用,節(jié)省了教師檢查學(xué)生作業(yè)的時間,促進(jìn)了學(xué)生更加自主地學(xué)習(xí),增加了學(xué)生學(xué)習(xí)的興趣,提高了學(xué)生實(shí)踐動手能力。但要使OJ系統(tǒng)更好地發(fā)揮效用,教師需要注意以下兩個方面:
(1)OJ系統(tǒng)需要教師對題目進(jìn)行正確描述和引導(dǎo)。題目內(nèi)容錄入包括題目錄入、輸入格式、輸出格式、輸入樣例、輸出樣例五個部分,每部分都至關(guān)重要,若描述不準(zhǔn)確,誤導(dǎo)了學(xué)生對題目內(nèi)容的理解,就會導(dǎo)致學(xué)生的代碼無法通過OJ系統(tǒng)的測試。對于OJ系統(tǒng)來說也是一樣,用例中的格式是逗號就必須寫逗號,否則測試就不通過。若題目中未明確表明,學(xué)生則會非常疑惑,屢試屢敗便會非常懊惱。因此,教師必須對題目進(jìn)行正確描述和引導(dǎo)。
(2)教師需要對測試用例考慮充分。測試用例的對錯會影響OJ系統(tǒng)對學(xué)生提交代碼的評判。如除法中除數(shù)不能為0,若輸入為0,需要輸出如“0不能作除數(shù)”之類的提示語。又如負(fù)數(shù)的考慮,有些學(xué)生在編程代碼中會忽略,默認(rèn)輸入只能為正數(shù),那么教師在設(shè)置測試用例及分值時就要體現(xiàn)出來,以引導(dǎo)學(xué)生全面考慮題目的用意。
OJ系統(tǒng)對教師提出了更高的要求,需要教師認(rèn)真負(fù)責(zé)全面地進(jìn)行準(zhǔn)備。
3結(jié)語
在C語言程序設(shè)計(jì)實(shí)驗(yàn)課中應(yīng)用OnlineJudge系統(tǒng),對教學(xué)效果的提升起了非常重要的作用,由此可見實(shí)現(xiàn)智能評閱對計(jì)算機(jī)程序設(shè)計(jì)類課程的重要性。筆者也積極地在OJ系統(tǒng)的基礎(chǔ)上開發(fā)一套更智能的評閱系統(tǒng),以促進(jìn)程序設(shè)計(jì)類課程的改革,使學(xué)生更喜歡這類課程,更好地培養(yǎng)學(xué)生的編程能力和實(shí)踐能力。