?

基于Online Judge 的C語言教學

2016-12-31 15:13鄒林方郭一鳴周一峰劉超英
移動信息 2016年8期
關鍵詞:用例C語言編程

鄒林方 郭一鳴 唐 鴛 周一峰 徐 濤 劉超英

?

基于Online Judge 的C語言教學

鄒林方1郭一鳴1唐 鴛2周一峰1徐 濤1劉超英1

1.成都理工大學,四川 成都 610059 2.四川師范大學,四川 成都 610101

慕課的興起顛覆了以往的教學模式,它提供了大量免費、共享、高質的課程,使得學習變得隨時隨地。各高校相繼在慕課平臺上推出了自己的課程,嘗試開展了基于C語言的慕課課程。Online Judge作為本次C語言教學的自動評閱工具,帶來了很多便利,但同時也存在一些不足之處。除了介紹Online Judge涉及的相關技術之外,還比較了Online Judge與手動評閱,最后結合Online Judge的不足之處展望了Online Judge的發展方向。

Online;Judge;C語言;MOOC

MOOC潮流下,我院開展了基于C語言的慕課課程,軟件工程專業2個班參加了此次的學習。除了傳統的課堂教學外,學生還可在MOOC平臺上觀看由授課老師發布的學習視頻,同時完成相應的測驗與作業。這些作業不再是知識點的鞏固與復習,而是由小的編程作業組成,可以彌補以往學生在編程方面訓練偏少的不足。作業的批改不再是老師的手動評閱,而是借助于Online Judge[1]。

經過一學期的學習,Online Judge的確能激起學生的學習興趣,提高學生的編程能力。

1 Online Judge

Online Judge是在線評判系統,最初用來于ACM-ICPC國際大學生程序設計競賽?,F在廣泛用于各高校的程序類課程教學過程中,比較有名的如北京大學的POJ、浙江大學的ZOJ等。

1.1 Online Judge評閱過程

本次MOOC平臺C語言的教學也是使用的這種評閱系統。它的評閱過程如下:學生根據題目要求編寫程序并提交,如果編譯不能通過則提示編譯不能通過。若編譯通過,則依次通過每個測試用例。用例的評判具體為:將用例中給定的輸入作為提交程序的輸入,然后運行程序,將程序輸出與用例中預先保存的輸出相比較,相同則獲得本用例相應的分數,否則獲得0分。最后將各個用例分數相加獲得本題得分[2]。

1.2 Online Judge優缺點

Online Judge是程序自動評閱系統的一種,它具有客觀、24小時可用、高效的特點。學生可利用此系統加大編程作業的練習,提高自己的編程能力。及時的反饋可以讓學生發現程序中的錯誤,吸取經驗。Online Judge也讓老師從繁重的批改作業中解放出來,使老師更有精力關注于課程本身[3]。

然而在一學期的使用過程中,也發現了一些Online Judge的不足之處。

1.2.1 只考慮結果,不關心過程

有的學生投機取巧,直接輸出程序結果,完全沒有實現過程,自動提交以后,系統仍然返回滿分。這種只考慮結果而不關心過程的方式實有不合理之處,同時也無法驗證程序實現是否滿足某些特殊要求。

1.2.2 沒有程序錯誤程度的區分

編譯沒有通過,學生就沒有成績,即使程序只是有一點小小的錯誤,沒有和其他錯得很離譜,完全不會的學生區別開來,不能反映學生的真實水平。

1.2.3 約束條件多

要想成功通過測試用例,需要滿足很多約束條件。比如輸入輸出的格式問題,學生往往在這方面出現錯誤,這些約束加大了學習中的阻礙,深深地打擊了學習者的積極性[4]。

1.2.4 缺乏抄襲檢測功能

作業與測驗中的程序答案很容易在網絡上找到。學生同時也會因為提交作業截止時間的到來而復制其他同學的代碼來應付。抄襲檢測可以檢測出兩份相同的代碼,從而端正學生的學習態度。然而聰明的學生會對復制來的程序進行裝飾,這也增加了抄襲檢測的難度。

2 發展方向

Online Judge這種通過運行程序,依次檢測每個測試用例的方式為動態評閱方式,但是一旦程序不能編譯通過便不能評分。這在平時的作業練習的過程中沒有太大的影響,但是在一些程序競賽、考試就有關系了[5]。若一個同學的程序幾乎是正確的,就因為缺少一個分號導致編譯不能通過得分為0。這種情況下就沒有體現出學生的真實水平?;蛟S我們可以從靜態評閱方式即不運行程序來評閱程序。模擬手工評閱的過程,提供若干參考答案,并設置關鍵語句,為每個關鍵語句按重要性給予相應的分數[6]。若關鍵語句正確則獲得相應的分數??梢詮某绦虻南嗨菩詠韺崿F這種評閱方式。由于同一功能程序的編寫方式有很多種,所以如何減少程序的多樣性將是研究的重點。此種評閱方式可以很好地解決只輸出結果而獲得滿分,或因小過失而得0分的問題。從程序的功能來評閱程序是無可置疑的[7]。以上提出的靜態評閱方式并不能取代動態評閱方式。因為就算程序含有所有關鍵語句也不能保證它能正常運行,所以只能是輔助方式。從內容和結果同時考慮的動靜態結合的評閱方式將會使程序的自動評閱更為合理[8]。

3 總結

近幾年來,MOOC的火熱顛覆了以往的教室學習模式,各種課程資源觸手可及,程序類課程的學習也十分熱門,這勢必推動程序自動評閱技術的進一步發展。學習者可以得到更有針對性、更加及時的反饋,使得學習變得隨時隨地[9]。程序的自動評閱可以使教師從大量作業批改中解放出來,可以使得學習者有更多實戰的機會,彌補重理論輕實踐的不足。然而目前Online Judge還不夠成熟,它還有很多的不足之處,相信不遠的未來,一定會有一個更加合理、完善的Online Judge來輔助程序類課程的學習[10]。

[1]梅宏,王千祥,等.軟件分析技術進展[J].計算機學報,2009,32(9):374.

[2]王蘭.應用于C語言無紙化考試的自動閱卷系統的研究[D].長春:吉林大學,2006.

[3]馬培軍,王甜甜,蘇小紅.基于程序理解的編程題自動評分方法[J].計算機研究與發展,2009,46(7):1136-1142.

[4]熊浩,晏海華.代碼相似性檢測技術:研究綜述[J].計算機科學,2010,37(8):155.

[5]鄧愛萍.程序代碼相似度度量算法研究[J].計算機工程與設計,2008,9.29(17):429.

[6]葉從歡,王光偉,黃蘭英,等.MOOC平臺下基于混合式學習的C語言教學模式研究[J].科技情報開發與經濟,2015,25(22):129-130.

[7]丁凱,張運凱,王方偉,等.基于MOOC平臺的C語言與程序設計混合式學習模式[J].中小學電教,2015(10):12-15.

[8]朱鴻鵬.《C語言程序設計》課程教學中的MOOC[J].知識窗:教師版,2015(9):38-39.

[9]廖雪花,厲蘭潔,唐思娩.基于OnlineJudge的C語言程序設計實驗課教學改革研究[J].計算機教育,2016(6):33-34.

[10]唐曉,李強,陳新,等.基于MOOC平臺的C語言課程教學模式研究[J].空軍預警學院學報,2015(3):227-229.

C language Teaching based on Judge Online

Zou Linfang1Guo Yiming1Tang Yuan2Zhou Yifeng1Xu Tao1Liu Chaoying1

1.Chengdu University of Technology, Sichuan Chengdu 610059 2.Sichuan Normal University, Sichuan Chengdu 610101

The rise of subversion of the previous teaching mode, it provides a large number of free, shared, high quality courses, so that learning becomes anytime, anywhere. All colleges and universities have launched their own courses in the Mu class platform, try to carry out the C language based on the mu course. Online judge as a tool for the automatic marking of the C language teaching, brought a lot of convenience. But there are also some shortcomings. In this paper, in addition to introduce related technologies involved in the online judge. We also compare the online judge and manual marking. Finally, combined with the shortcomings of online judge and prospects the development direction of online judge.

Online; Judge; C language; MOOC

G642;TP312.1-4

A

1009-6434(2016)08-0108-02

猜你喜歡
用例C語言編程
UML用例間包含關系與泛化關系的比較與分析
UML用例模型中依賴關系的比較與分析
編程,是一種態度
元征X-431實測:奔馳發動機編程
編程小能手
基于Visual Studio Code的C語言程序設計實踐教學探索
紡織機上誕生的編程
51單片機C語言入門方法
基于C語言的計算機軟件編程
高職高專院校C語言程序設計教學改革探索
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合