999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MOOC的編程語言自動評測*

2016-12-10 02:05:16鄭立華高萬林周緒宏
現代教育技術 2016年9期
關鍵詞:程序系統(tǒng)

胡 慧 鄭立華 高萬林 周緒宏

?

基于MOOC的編程語言自動評測*

胡 慧1鄭立華1高萬林1[通訊作者]周緒宏2

(1.中國農業(yè)大學信息與電氣工程學院,北京 100083;2.上海宏第網絡科技有限公司,上海 200000)

針對大規(guī)模在線教育編程語言學習中存在的學生需要安裝IDE開發(fā)環(huán)境編譯程序、教師評判費時耗力等問題,文章研究了編程語言自動評測的應用模式和方法,開發(fā)了基于MOOC的編程語言自動評測系統(tǒng),并通過實驗驗證了該系統(tǒng)的評判效率。該系統(tǒng)可以為大規(guī)模在線教育平臺學習計算機程序設計課程提供在線編輯程序、編譯程序、運行程序的分布式集群測試環(huán)境;可以根據教師設置的程序用例,實時、自動地評判程序的正確性;還可以對提交的程序代碼進行大數據分析,找出不同作業(yè)之間的相似度,自動、智能化地防范抄襲等行為。

MOOC;編程語言;自動評判;防抄襲;大數據

引言

近年來,一種新的網絡課程教學模式——MOOC(Massive Open Online Course,大規(guī)模開放在線課程)在教育領域興起。以edX為例,由于其免費、公開,無數學子對其競相追捧,其用戶也逐漸增加,早在2013年就已經擁有超過90萬的注冊者[1]。C語言、C++語言、Java語言是目前計算機程序設計中應用廣泛的編程語言,也是各類高等院校計算機及相關專業(yè)必修的基礎課。但學生學習這些編程語言時,需要在機房或個人電腦上安裝IDE開發(fā)環(huán)境來編輯程序、編譯程序、運行程序,而在編輯、編譯、運行中碰到常見的問題時,往往不知如何解決;教師在評判學生的編程題作業(yè)時,也需要拷貝程序、編譯程序、運行程序后才能給出分數,費時耗力。

為了解決上述問題,相關人員對程序設計題在線評測做了一些研究。在國外,程序評測系統(tǒng)主要應用于程序競賽,對源代碼進行自動編譯運行以及記時、評分、統(tǒng)計等[2]。目前,國外影響力最大的程序評測系統(tǒng)是PC2程序測試控制系統(tǒng),它由美國加州大學專為支持ACM/ICPC而設計研發(fā)。該系統(tǒng)提供了完整的程序競賽評測解決方案,競賽舉辦方可在系統(tǒng)的后臺操作、制定具體的競賽規(guī)則,從而對競賽選手提交的源代碼進行檢查、編譯、執(zhí)行,最終將評測結果返回給參賽者[3]。對比國外,國內的程序評測系統(tǒng)起步較晚,但隨著國內ACM/ICPC的逐漸興起,國內不少高校和組織紛紛對程序評測系統(tǒng)進行了研發(fā),比較典型的有北京大學在線評測系統(tǒng)(PKU Online Judge)[4][5]、浙江大學在線評測系統(tǒng)(ZJU Online Judge)[6]、中國科技大學在線評測系統(tǒng)(USTC Online Judge)[7]以及高中生程式解題系統(tǒng)(An Online Judge System For Beginners)[8][9]等。

在大規(guī)模在線開放課程中,“大規(guī)模”意味著參與者的數量不受限制;“開放”意味著任何人都可以參與學習,并且是免費的;“在線”則意味著參與者通過網絡參與課程,不受地域限制[10]。面對如此大的用戶量和訪問量,已有的編程語言自動評測系統(tǒng)能否滿足其需求還有待評估,而且目前也沒有有效的數據或方法能夠進行證明。鑒于此,本研究采用了云計算和大數據的相關技術,構建了基于MOOC的編程語言自動評測系統(tǒng),可以為大規(guī)模在線教育平臺的計算機程序設計課程(如“C程序設計”、“C++程序設計”等課程)提供在線編輯程序、編譯程序、運行程序的分布式集群測試環(huán)境;可以根據教師設置的程序用例,實時、自動地評判程序的正確性,并返回相應的分數;還可以對提交的程序代碼進行大數據分析[11],找出常見的編譯錯誤、參考程序代碼等,能夠有效解決教師對學生提交的編程題作業(yè)不能簡單快速地予以驗證、不能有效客觀給分、不能給出編譯運行出錯的幫助信息、不能給出程序參考代碼等問題,從而更好地為編程語言類課程提供服務。

一編程語言自動評測的應用模式

大規(guī)模在線教育為教學提供了一種全新的模式,其中對編程語言類課程習題的評判也應該本著更好、更便捷地服務于用戶的目標,為教學/學習編程者提供便利的測試環(huán)境和大數據分析環(huán)境。也就是說,要創(chuàng)設一個環(huán)境,使學生不需要在本地電腦上安裝IDE開發(fā)環(huán)境,就可以隨時隨地通過電腦、手機、平板電腦等學習編程題;教師也不需要為批改、評判編程題作業(yè)而頭疼,而是可以從編程題作業(yè)的大數據分析中獲取有助于教學的信息。

鑒于此,本研究提出了編程語言自動評測的三種應用模式,不同用戶可以根據自身的需求選擇使用其中的一種或多種應用模式,如表1所示。

表1 編程語言自動評測的三種應用模式

1 簡單應用

簡單應用是用戶以某種方式提交程序代碼(用戶自定義輸入)到服務器端,服務器端編譯、運行該程序代碼,并返回編譯、運行結果——如果有編譯錯誤,會顯示代碼程序哪一行錯誤、什么錯誤;如果有運行錯誤,則顯示代碼程序哪一行錯誤。簡單應用方式只編譯、運行用戶程序,不評判程序的運行結果,也不給出分數。

2 高級應用

高級應用是用戶以某種方式提交程序代碼、測試用例輸入、測試用例輸出、測試用例權重、測試用例分數到服務器,服務器端編譯、運行該程序代碼,同時使用測試用例輸入進行運行測試,并將運行結果和測試用例的期望值進行精確比較,根據權重計算出每組測試用例的得分。有幾組測試用例就運行比較幾次,最終計算出所有測試用例的總分,并返回運行結果、總得分到用戶客戶端。高級應用方式既要編譯、運行用戶程序,又要用測試用例來評判程序的運行結果并給出分數。

3 智能應用

智能應用是用戶以某種方式提交程序代碼、測試用例輸入、測試用例輸出、測試用例權重、測試用例分數到服務器,服務器自動編譯、運行該代碼程序,系統(tǒng)對輸出結果進行智能匹配,顯示更多的調試信息,并給出代碼的修改建議;同時,對提交的程序代碼進行大數據分析,搜索出類似的程序代碼返回給學生參考,并列出類似的、常見的編譯錯誤供學生找出問題,從而更好地學習編程語言。智能應用方式既要編譯、運行用戶程序,又要用測試用例來評判程序運行結果并給出分數,還要對程序代碼進行大數據分析,找出類似的代碼或常見的編譯錯誤。

二編程語言自動評測的方法

1 分布式集群系統(tǒng)設計

本研究構建的基于MOOC的編程語言自動評測系統(tǒng)的服務器端采用部署在云計算平臺的分布式集群系統(tǒng)(如圖1所示),包括評測管理節(jié)點(Manager Node)、程序運行節(jié)點(Program Run Node)、作業(yè)管理節(jié)點(Job Manager Node)、任務節(jié)點(Task Node)、數據管理節(jié)點(Name Node)、數據節(jié)點(Data Node)。

圖1 基于分布式集群的自動評測系統(tǒng)

圖2 系統(tǒng)功能模塊圖

具體來說,評測管理節(jié)點用于在收到客戶端的連接請求后,通過數據管理節(jié)點將待測評代碼保存到分布式文件系統(tǒng)中,并根據當前的負載情況給待測評代碼分配程序運行節(jié)點;然后,由程序運行節(jié)點編譯程序、運行程序、評判程序,而程序編譯結果等數據保存在分布式文件系統(tǒng)中。作業(yè)管理節(jié)點用于提交搜索查詢代碼作業(yè),然后分配作業(yè)到各個任務節(jié)點,通過各個任務節(jié)點并發(fā)進行代碼的大數據搜索與匹配,并將匹配結果返回到作業(yè)管理節(jié)點;最后,將程序運行節(jié)點返回的結果、作業(yè)管理節(jié)點返回的結果,經過處理返回到客戶端。數據管理節(jié)點和數據節(jié)點則組成分布式文件系統(tǒng)(Distrubuted File System),為其它各個節(jié)點處理數據提供保存程序代碼和其它數據的環(huán)境。

總之,基于MOOC的編程語言自動評測系統(tǒng)服務器端的各個節(jié)點,都是由云計算平臺提供的虛擬機節(jié)點,可以根據需要動態(tài)地調整各種節(jié)點虛擬機的數量,以更合理地利用服務器的資源,滿足實際運行的需要。

2 評測系統(tǒng)的安全性保障

為保障基于MOOC的編程語言自動評測系統(tǒng)的安全,服務器端對客戶端提交的程序代碼要進行特殊的云安全檢查:

(1)對程序代碼進行病毒、惡意代碼掃描檢查;

(2)對程序代碼是否含有不允許執(zhí)行的系統(tǒng)命令或調用特殊的系統(tǒng)API進行掃描檢查;

(3)對程序代碼內存分配、釋放、檢查,程序運行結束后,系統(tǒng)應自動釋放、回收用戶程序未顯示釋放的內存。

(4)對程序代碼中出現的問題或設計缺陷(如程序死循環(huán)、空耗CPU資源等)進行檢查,一旦檢測到某個運行程序異常,則立刻終止該程序的運行。

三基于MOOC的編程語言自動評測系統(tǒng)的設計和開發(fā)

本研究基于中國農業(yè)大學的MOOC平臺——雨虹學網,運用上述編程語言自動評測的方法,設計并開發(fā)了基于MOOC的編程語言自動評測系統(tǒng)。

1 系統(tǒng)功能

本系統(tǒng)的功能模塊如圖2所示,主要分為三個模塊:

(1)教師出題模塊

在教師出題模塊,教師可以添加編程題,設置編程題的類型、分數,起止時間等,然后填寫編程題目、描述問題、測試用例、點擊提交,即可生成一道編程題。其中,測試用例可以設置多組,每組測試用例有不同的輸入和可以預計得到的輸出;每組測試用例可以設置不同的權重,從而得到不同的分值。也就是說,即使代碼程序采取投機取巧的方式,也只能通過一組測試用例,而不能通過所有或部分的測試用例。

(2)學生答題模塊

在學生答題模塊,學生可以在“編輯代碼”區(qū)域內進行待測評代碼的編輯,程序自動評測成功頁面如圖3所示。如果代碼需要輸入值,可以填寫相應的輸入值。點擊“運行”按鈕,可以對代碼進行編譯。如果代碼有錯誤、編譯未通過,會顯示編譯報錯,“編譯結果”輸出框會給出相應的編譯出錯信息提示;如果代碼運行正常,則顯示相應的運行結果。當學生點擊“提交”按鈕后,代碼就上傳到服務器端并進行自動評測,并根據教師預先設置的一組或者多組測試用例的輸入和輸出,與學生提交的待測評代碼進行模糊匹配——如果源代碼通過了測試用例,即可獲得滿分;如果有一組測試用例沒被通過,則會根據相應的比重計算分數。

圖3 程序自動評測成功頁面圖

圖4 學生代碼相似度詳情頁面

(3)學生作業(yè)防抄襲模塊

學生作業(yè)防抄襲模塊采用大數據分析方法,主要用于教師查看學生與學生之間編程題作業(yè)的雷同情況。對任意兩個學生A和B同一道編程題的作業(yè)進行相似度計算的方法是:將A同學待檢測作業(yè)的每一行代碼與B同學作業(yè)的每一行代碼計算相似度(字數少于15字的代碼行不進行計算),最高值作為兩同學作業(yè)的該行代碼的相似度;然后,計算所有行代碼相似度的平均值,作為兩同學該道編程題作業(yè)的相似度,具體頁面如圖4所示。

2 系統(tǒng)效率測試

為了進行系統(tǒng)的負載測試(壓力測試),本研究編寫了C語言程序文件test.c和測試Shell腳本。其中,test.c包括9行代碼,時間復雜度為O(1),即執(zhí)行該程序所需要的計算工作量為常量,并且與問題規(guī)模n無關。在測試Shell腳本中指定test.c的兩組測試用例的輸入、輸出、權重以及分數,并使程序test.c連續(xù)運行500次。在運行腳本前輸出時間,運行腳本后再次輸出時間,以兩次時間間隔作為這個程序連續(xù)運行500次耗費的時間。運行結果顯示:這個程序test.c運行500次耗費的時間是55秒,這大致相當于每運行一次程序約耗時100毫秒——當然,如果服務器配置比較好,那么耗費的時間也就更少。

四結論

本研究通過對已有在線評測系統(tǒng)的分析和總結,結合MOOC發(fā)展的切實需求,提出了基于云計算平臺和大數據分析的編程語言在線自動評測方法,并開發(fā)了基于MOOC的編程語言自動評測系統(tǒng)。該系統(tǒng)可以對用戶提交的C、C++等語言源代碼進行在線自動評判,實時地得到程序編譯、運行結果。與傳統(tǒng)的人工評測方法相比,該系統(tǒng)大大提高了評測的效率和準確程度。不僅如此,該系統(tǒng)還可以根據測試用例對用戶提交的源代碼進行黑盒測試,并根據測試用例的輸入、輸出、權重、分數,計算出該用戶的最終得分。而對于用戶代碼的輸出結果,本研究使用了模糊匹配算法對程序進行分數計算,不會因為其它小問題而導致程序運行得不到正確的結果。同時,本研究利用大數據分析方法,通過分析對比計算出兩兩程序源代碼之間的相似度,智能化地檢測出抄襲行為,為鼓勵學生自主學習、獨立作業(yè)并在理解消化知識的基礎之上提高編程能力奠定了基礎。上線試運行表明,該系統(tǒng)具有較高的評測效率,能夠實現500人并發(fā)提交編程題,且運行穩(wěn)定,具有較好的可擴展性。

[1][10]李華,龔藝,紀娟,等.面向MOOC的學習管理系統(tǒng)框架設計[J].現代遠程教育研究,2013,(3):28-33.

[2]魯靜軒,孫晶,李元嵩.程序在線評測系統(tǒng)的設計與實現[J].硅谷,2008,(24):38.

[3]黃隴,陳致明.軟件測試數據生成中的區(qū)間削減方法研究[J].南京大學學報(自然科學版),2005,(z1):663-667.

[4]陳東東,須文波.基于ASP.NET技術的綜合業(yè)務管理平臺的設計與實現[J].電腦與電信,2008,(8):85-86、98.

[5]Collins M, Duffy N. Convolution kernels for natural language[J]. Advances in Neural Information Processing Systems, 2002,(l):625-632.

[6]范立新.改進的中文近似字符串匹配算法[J].計算機工程與應用,2006,(34):172-174、207.

[7]徐瑩.匯編程序在線評測系統(tǒng)的研究與開發(fā)[D].河南:鄭州大學,2010:2-5.

[8]Wang J X, Chen L, Zhou W W. Design and implementation of an internet-based platform for C language learning[A]. Li F, Zhao J, Shih T, et al. Advances in Web based Learning - ICWL 2008[C]. Berlin: Springer-Verlag, 2008:187-195.

[9]王春霞.自動閱卷系統(tǒng)的開發(fā)[J].鹽城工學院學報(自然科學版),2002, (1):47-49.

[11]馬金鐘.依托MOOC平臺的高校課程聯(lián)盟運行機制及實施策略[J].中國電化教育,2014,(12):81-84、116.

編輯:小米

The Automatic Judge of MOOC-based Programming Language

HU Hui1ZHENG Li-hua1GAO Wan-lin1[Corresponding Author]ZHOU Xu-hong2

Aiming at the problems existing in the learning of massive online education programming language that students have to install IDE development environment to compiler program, and teachers take a lot of effort to judge students’ programming assignments, this paper studied the application patterns and methods of automatic judge of programming language, and further developed an automatic judge system of MOOC-based programming language. The judging effectiveness of this system was verified through experiments. Firstly, the system could provide distributed cluster test environment for learners that included online editing, compiling and running program to study computer programming courses on massive online education platform. Secondly, this system judged the validity of program automatically and in real-time based on the use cases set by teachers. Finally, this system could also conduct big data analytics on submitted program code, which found out the similarity between different programs, automatically and intelligently preventing plagiarism.

MOOC; programming language; automatic judge; anti-plagiarism; big data

G40-057

A

1009—8097(2016)09—0080—06

10.3969/j.issn.1009-8097.2016.09.012

本文為2014年度北京高等學校教育教學改革項目“MOOCs與課堂相結合的混合式教學模式在程序設計課程中的應用研究與實踐”(項目編號:2014-ms044)的階段性研究成果。

胡慧,在讀博士,研究方向為農業(yè)信息化、云計算、在線教育等,郵箱為cauhuhui@163.com。

2015年11月17日

猜你喜歡
程序系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
半沸制皂系統(tǒng)(下)
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
英國與歐盟正式啟動“離婚”程序程序
主站蜘蛛池模板: 日本手机在线视频| 日韩毛片基地| 久久综合色视频| 操操操综合网| 54pao国产成人免费视频| 国产精品女人呻吟在线观看| 第一区免费在线观看| a免费毛片在线播放| 国产亚洲美日韩AV中文字幕无码成人| 国产经典免费播放视频| 亚洲国产成人自拍| 亚洲成人手机在线| 国产精品密蕾丝视频| 九九热精品在线视频| 婷婷开心中文字幕| 欧美一级视频免费| 伊人久久大香线蕉综合影视| 尤物特级无码毛片免费| 在线精品欧美日韩| 国产尤物jk自慰制服喷水| 一边摸一边做爽的视频17国产| 免费看黄片一区二区三区| 亚洲欧美在线精品一区二区| 欧美一级在线看| 中文无码毛片又爽又刺激| 中文字幕 日韩 欧美| 青青青亚洲精品国产| 中文字幕2区| 成年女人18毛片毛片免费| AV老司机AV天堂| 欧美不卡二区| 最新国产精品鲁鲁免费视频| 国产欧美在线观看一区| 国产精品女主播| 玩两个丰满老熟女久久网| 国产亚洲精品97AA片在线播放| 日韩欧美一区在线观看| 91九色最新地址| 99久久无色码中文字幕| 久久精品只有这里有| 91网站国产| 黄色国产在线| 日韩高清在线观看不卡一区二区| 精品成人一区二区| 亚洲综合激情另类专区| 精品夜恋影院亚洲欧洲| 一级毛片免费高清视频| 国产青榴视频在线观看网站| 国产一二三区在线| 久久精品免费看一| 97视频免费在线观看| 伊人查蕉在线观看国产精品| 日韩东京热无码人妻| 国产精品久久久久无码网站| 久久毛片基地| 亚洲人成人无码www| 国产亚洲精品97在线观看| 青青青国产免费线在| 精品国产免费观看一区| 久久99国产乱子伦精品免| 尤物在线观看乱码| 亚洲国产中文综合专区在| 免费播放毛片| 国产一区二区三区夜色| 国产污视频在线观看| 91最新精品视频发布页| 国产h视频免费观看| 毛片免费在线视频| 无码区日韩专区免费系列| 亚洲男人在线| 福利在线不卡| 国产国产人成免费视频77777 | 久久96热在精品国产高清| 免费福利视频网站| 欧美一级一级做性视频| 久久精品亚洲热综合一区二区| 成人在线亚洲| 久久免费看片| 9久久伊人精品综合| 熟妇无码人妻| 五月婷婷综合在线视频| 国产va在线观看|