文章編號:1962-5913(2008)15-0069-03
摘要:程序設計中的主觀題自動評判歷來是一個難題,我們提出了一個全新的程序設計主觀題自動評判方案,并完成了系統的設計開發。本文則較為詳細地給出了改革的主導思想、系統的功能和使用效果。
關鍵詞:程序設計;主觀題;自動評判;測試用例
中圖分類號:G642
文獻標識碼:B
1問題的提出
程序設計如同作文一樣,是主觀性很強的訓練,哪怕是同一個題目,不同的人、不同的方法,使得程序的質量和效率都完全不同。正是由于這一點,教師需要對每個學生的程序細節逐一評判,才能真正了解學生掌握的程度。而面對越來越多的學生和高負荷的工作,教師要做到完全細致的人工評判和對學生的個別指導是很困難的。所以長期以來,各種考試中的這種主觀題也沿用無紙化考試的一般方式,即A、B、C、D選擇題,或者挖個洞叫“填空”的填空題。例如國外知名度較高的程序員考試,國內的全國計算機等級考試也不例外。這對程序設計來說,無異于競猜游戲,對學生學習程序設計,特別對培養學生編程能力帶來了極大的障礙。而這種障礙遲遲不能解決的主要原因是主觀題的評判機理問題,就如同學生的作文不能讓機器判分一樣。
自1999年起,我們以C語言程序設計課程為龍頭開始建設教學支撐平臺,圍繞主觀編程題的評判方法進行了深入的調研和研究,于2003年建立了C語言程序設計課程網絡教室和課程網站,在此基礎上,引進了國外的先進系統,采用了網絡技術、數據庫技術、面向對象技術和分布式技術支持,完成了在全真環境下對主觀編程題進行自動評測的系統開發,并先后開發了網上考試系統、輔導答疑系統及其它輔助教學軟件,對教學和測評是強有力的支持,加強了對學生能力的培養,提高了教學質量。
2主觀題自動評判方法
所謂自動評判,就是要讓學生提交的程序經過語言處理系統的編譯器進行實際編譯運行,將其結果返回到課程評測系統中,其流程如圖1所示。
其中的核心部分是自動測評系統,它完成的主要功能是接收源程序,在實際編譯環境下按預先設置好的測試用例進行測試評判,并提交到遠程環境進行相似性比對,最后將所有結果進行統計分析。

3自動評測系統的設計與實現
3.1自動評測功能設計
在技術方面,我們首先引進了被國際上許多高校采用的、開源的moodle系統作為教學輔助管理系統,該系統具有支持多種教學資源管理、方便師生交流等功能。在此基礎上,我們借鑒了ACM國際大學生程序設計競賽中采用的程序測試方法,自行開發完成了針對C語言主觀編程題進行自動測試的功能,實現了對學生提交的程序按事先設計好的測試用例逐一由系統完全自動編譯并投入運行,自動進行運行結果統計分析。
圖2是學生看到的題目及測試用例。其中包括題干、教師設計的公開測試用例(程序的輸入和預計的輸出)、題目進程控制(開啟時間、折扣時間和關閉時間)、題目分數(正常得分和折扣比例)等信息。其中的測試用例是保證程序設計質量的有效措施,教師可以通過設計適當的測試用例全面測試學生程序,提高和鍛煉學生的編程能力。可以為每一道題設計多個公開的或保密的測試用例,例如對于題目7-3而言,不僅需要學生調試出程序的結果,而且需要通過題目設定的1個公開的測試用例和2個保密的測試用例。系統將按照測試用例的執行情況評價程序并給出成績。

圖3是學生提交程序的界面。提交的程序是學生在本地的開發平臺自己調試通過的源程序。通過“提交”窗口,系統在后臺對學生的程序進行自動編譯,對每個測試用例進行實際運行,然后將評判結果即時返回學生。

為了對學生學習過程實施有效監控,我們將美國斯坦福大學強大的實時程序比對功能嵌入到該系統中,通過相似度分析控制學生的編程質量。圖4是學生看到的測試結果。

通過自主進行的二次開發工作,成功實現了對主觀編程在真實的環境下進行自動評判。這樣徹底改變了以往在靜態環境下“編寫”動態程序設計的局面,使學生真正得到了實際操作的訓練,通過即時評價,激發了學生的興趣。
3.2自動統計功能設計
圖5界面是教師看到的每一題目學生完成的總體情況,圖6是教師看到的每個學生的每個測試用例通過的情況。通過這個系統,擴展了教學空間,強化了教學過程監控,方便了師生交流互動。
任課教師可以通過這個系統看到學生平時作業和上機練習,控制學生的學習進度,及時發現學生存在的問題。學生的全部作業和上機答案均通過課程支撐平臺提交,任課教師也可以通過課程支撐平臺為每一道題目設置作業的最后提交時間,以便控制課堂教學整體進度。同時,在教學過程中,教師通過“網絡考試系統”定期公布各章小測驗題目,要求學生通過網絡進行自測,根據自測結果自己調整學習方法和學習進度。教師通過學生的自測情況掌握全校學生的學習情況,分析學生學習過程中的難點。


4結束語
借助于先進的技術支撐,針對主觀題的評判測評問題所研發的測評系統,解決了長久以來程序設計課程的測試評價難題。應用這種測評方式,加強了對學生學習過程的有效管理,也為學生提供了全真的學習和評判的環境,有利于能力培養。這套系統還有許多不完善之處,希望得到同行專家的批評指正。
參考文獻:
[1] 中國高等院校計算機基礎教學改革課題研究組. 中國高等院校計算機基礎教學課程體系[M]. 北京:清華大學出版社,2006.
[2] 教育部高等學校計算機科學與技術教學指導委員會. 關于進一步加強高等學校計算機基礎教學的意見(試行)[M]. 北京:高等教育出版社,2006.