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

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

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

胡 慧 鄭立華 高萬林 周緒宏

?

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

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

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

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

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

引言

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

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

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

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

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

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

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

1 簡單應用

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

2 高級應用

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

3 智能應用

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

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

1 分布式集群系統設計

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

圖1 基于分布式集群的自動評測系統

圖2 系統功能模塊圖

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

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

2 評測系統的安全性保障

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

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

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

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

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

三基于MOOC的編程語言自動評測系統的設計和開發

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

1 系統功能

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

(1)教師出題模塊

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

(2)學生答題模塊

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

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

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

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

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

2 系統效率測試

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

四結論

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

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

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

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

[4]陳東東,須文波.基于ASP.NET技術的綜合業務管理平臺的設計與實現[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]徐瑩.匯編程序在線評測系統的研究與開發[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]王春霞.自動閱卷系統的開發[J].鹽城工學院學報(自然科學版),2002, (1):47-49.

[11]馬金鐘.依托MOOC平臺的高校課程聯盟運行機制及實施策略[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)的階段性研究成果。

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

2015年11月17日

猜你喜歡
程序系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
半沸制皂系統(下)
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
主站蜘蛛池模板: 中文字幕在线看| 亚洲色中色| 久久a级片| 看你懂的巨臀中文字幕一区二区| 国产成人精品免费视频大全五级| 2021天堂在线亚洲精品专区| 2021最新国产精品网站| 尤物亚洲最大AV无码网站| 久久综合九色综合97网| 亚洲不卡av中文在线| 色呦呦手机在线精品| 亚洲日韩在线满18点击进入| 亚洲区视频在线观看| a级毛片免费播放| 丁香亚洲综合五月天婷婷| 国产一级毛片在线| 亚洲欧美日韩另类在线一| 久久人搡人人玩人妻精品一| 免费高清毛片| 亚洲二三区| 秋霞国产在线| 亚洲中文字幕23页在线| 毛片基地视频| 伊人天堂网| 亚洲精品自在线拍| 国产91精品调教在线播放| 99热这里只有精品国产99| 精品夜恋影院亚洲欧洲| 精品黑人一区二区三区| 国产精品亚洲专区一区| 国产精品第一区在线观看| 亚洲成在人线av品善网好看| 国产女人爽到高潮的免费视频 | 亚洲bt欧美bt精品| 成人在线观看不卡| 一级毛片不卡片免费观看| 色偷偷综合网| 欧美亚洲国产精品第一页| 免费jjzz在在线播放国产| 日韩精品久久久久久久电影蜜臀| 91麻豆国产在线| 福利小视频在线播放| a毛片基地免费大全| 极品国产在线| 日韩午夜福利在线观看| 色综合婷婷| www.日韩三级| 无码高潮喷水专区久久| 亚洲五月激情网| 国产极品美女在线播放| 国产麻豆福利av在线播放| 日本高清成本人视频一区| 国产97公开成人免费视频| 女人一级毛片| 久久 午夜福利 张柏芝| 久久亚洲精少妇毛片午夜无码| 国产高清不卡视频| 在线观看无码av免费不卡网站| 在线免费看黄的网站| 久久综合伊人77777| 成年人国产视频| 欧美激情视频一区二区三区免费| 伊人久久婷婷| 99视频在线免费看| 99精品福利视频| 亚洲人成在线精品| 欧日韩在线不卡视频| 韩日无码在线不卡| 97久久免费视频| 中文字幕日韩丝袜一区| 伊人久久大香线蕉aⅴ色| 免费国产小视频在线观看| 国产噜噜噜| 亚洲最猛黑人xxxx黑人猛交| 免费精品一区二区h| 国产成人免费手机在线观看视频| 中文字幕天无码久久精品视频免费 | 日韩AV无码免费一二三区| 欧美www在线观看| 久久青草免费91观看| 凹凸国产分类在线观看| 嫩草国产在线|