肖紅玉,藍榮祺,萬志強
(北京師范大學珠海分校信息技術學院,廣東珠海519087)
在線評測教學輔助系統(tǒng)設計與應用
肖紅玉,藍榮祺,萬志強
(北京師范大學珠海分校信息技術學院,廣東珠海519087)
針對程序設計類課程實驗教學的需求和特點,在分析現(xiàn)有的在線評測系統(tǒng)特點的基礎上,設計開發(fā)了程序設計在線評測教學輔助系統(tǒng),并成功應用在C/C++/Java/數(shù)據(jù)結構課程的實驗教學中。文中介紹了系統(tǒng)的總體設計目標、技術架構、功能設計、數(shù)據(jù)庫設計以及應用情況。結果表明:系統(tǒng)實現(xiàn)了實驗課程教學資源、作業(yè)、題庫、用戶管理的功能,最重要的是實現(xiàn)了程序練習和評判過程的自動化和標準化,應用情況良好,獲得師生好評,對教學質量有很大的促進作用。
在線評測;教學資源;實驗教學;教學輔助系統(tǒng)
C/C++/Java/數(shù)據(jù)結構等程序設計課程是高校理工類專業(yè)的基礎核心課程,課程培養(yǎng)目標:培養(yǎng)學生掌握程序設計的思想和方法,掌握基本的程序設計過程和技巧,初步具備分析問題和利用計算機求解問題的能力[1]。這類課程對實踐開發(fā)能力、邏輯性思維要求比較高[2]。提高學生實踐開發(fā)能力最有效的方法就是重視實驗教學,督促學生在課堂內外編寫大量代碼。目前,部分院校的程序設計課程的實踐教學環(huán)節(jié)仍停留在學生提交代碼,課后由教師或助教手工評判的傳統(tǒng)教學模式上。這種教學模式不僅浪費資源、耗時耗力,并且由于作業(yè)完成情況反饋時間過長,學生的大腦接受的刺激頻率過低,從而導致對教學內容的記憶度大為減弱,久而久之開始厭倦枯燥的編程作業(yè),學習效果欠佳[3]。ACM國際大學生程序設計競賽(ACM/ICPC)[4]是目前全球公認水平最高、影響最大的編程賽事,許多高校開發(fā)了基于ACM/ICPC的程序設計在線評測系統(tǒng)[5-9],提供程序設計競賽與訓練的開放式環(huán)境,但這些系統(tǒng)主要為ACM比賽服務,不適合直接用于課程實驗教學[10-13],有些高校以此為藍本設計了在線評測教學輔助系統(tǒng)[14]。
文中對現(xiàn)有的在線判題系統(tǒng)進行了分析,綜合各系統(tǒng)的優(yōu)點與特點,結合我校程序設計類課程實際教學需要,設計了一個面向實驗教學兼顧競賽的在線評測教學輔助系統(tǒng),系統(tǒng)可對用戶提交的C/C++/Java源程序進行編譯、運行、評測,特別地還提供了教學中心和作業(yè)管理子系統(tǒng)。程序設計教學團隊在該系統(tǒng)開展了多課程(C/C++/Java程序設計/數(shù)據(jù)結構)多輪實驗教學實踐,實踐效果良好。
基于Linux/Windows、Python、Mysql、Django 1.8和Nginx1.8平臺和HTML5+jQuery 1.11+Bootstrap 3.5前端開發(fā)技術的在線評測教學輔助系統(tǒng)是以ACM/ICPC競賽模式為藍本而設計的程序源代碼在線評判、實驗教學、競賽、教學資源管理的平臺。系統(tǒng)可以對用戶提交的C/C++/Java源代碼進行編譯、運行、實時評測打分并給出明確的評判結果。系統(tǒng)為老師提供了課程管理、排課管理、題庫管理、作業(yè)管理、助教管理、教學資源管理等功能,是日常教學、考試、競賽的一體化平臺。學生借助該平臺可以完成日常課程作業(yè)、查看用戶排名、站內檢索、下載教學資源等。
系統(tǒng)采用多層分層架構,分為:表現(xiàn)層、業(yè)務邏輯層、評測模塊、數(shù)據(jù)訪問層,層間關系如圖1所示。
圖1 系統(tǒng)體系結構圖
表現(xiàn)層:接收用戶提交的數(shù)據(jù),并以圖表的形式向用戶展示請求的數(shù)據(jù),主要用于實現(xiàn)與用戶的交互。
業(yè)務邏輯層:包含應用于業(yè)務對象的規(guī)則,系統(tǒng)的業(yè)務規(guī)則在這部分編寫,主要完成以下功能:完成系統(tǒng)業(yè)務規(guī)則和邏輯的實現(xiàn),從表現(xiàn)層接受用戶請求,根據(jù)業(yè)務規(guī)則處理請求,通過數(shù)據(jù)訪問層完成與數(shù)據(jù)庫的交互任務,將處理結果返回給表現(xiàn)層。
數(shù)據(jù)訪問層:主要完成與數(shù)據(jù)庫的交互即CRUD(Create、Retrieve、Update、Delete)操作。數(shù)據(jù)訪問層為業(yè)務邏輯層提供服務,根據(jù)業(yè)務邏輯層的要求從數(shù)據(jù)庫中提取數(shù)據(jù)或者修改數(shù)據(jù)。
評測模塊:對學生提交的程序代碼進行編譯、運行。如果源代碼在編譯過程出現(xiàn)錯誤,直接返回CE(Compile Error),結束判題。編譯成功,則讀取預定的輸入數(shù)據(jù)并運行程序,獲取程序運行時間、內存和CPU使用情況,如果發(fā)現(xiàn)這些數(shù)據(jù)超出題目的設定值,則結束判題,并給出對應的提示。如果程序順利執(zhí)行,則把輸出重定向到臨時的輸出文件中,并和預先給定的標準輸出對比,兩個文件的內容一模一樣則判定學生提交的代碼是正確的,并返回Accept;否則返回WA(WrongAnswer),評測過程如圖2所示。
圖2 代碼評測流程圖
系統(tǒng)共有管理員、老師、學生、助教4種角色,不同角色擁有不同的操作權限。所有用戶都有個人中心,包括:個人主頁(訪問題目、解決題目的次數(shù)匯總及明細與鏈接,提交次數(shù)匯總,通過次數(shù)匯總)、上傳頭像、賬戶設置(密碼、昵稱、郵箱、個人簡介、常用編程語言)、微信綁定。
管理員:可以設置系統(tǒng)運行參數(shù)(判題機狀態(tài)、網(wǎng)站名稱等)、用戶管理(增加用戶、刪除用戶、查找用戶、修改用戶、批量導入用戶密碼重置等),管理員還擁有老師和學生的所有操作權限。
教師:
1)題庫子系統(tǒng):發(fā)布、修改、刪除題目,發(fā)布題目時需要輸入題目標題、題目描述、輸入描述、輸出描述、樣例輸出、樣例輸出、時間限制、內存限制、輸入測試數(shù)據(jù)、標準輸出數(shù)據(jù)、題目提示和參考程序,其中時間限制、內存限制可以采用默認值。題目可以分類管理,也可以按照難易程度分級??梢栽O置是否隱藏題目,被隱藏的題目只對老師可見。本人發(fā)布的題目只有自己可以修改、刪除,其他老師只能查看、布置作業(yè)時選用。每道題都可以查看評測歷史。
2)教學中心:教學中心包括課程管理(創(chuàng)建、編輯、刪除課程)、課程通知(發(fā)布、修改、刪除課程通知)、教學資料管理(上傳、刪除教學資料)、排課管理(設定上課的起止教學周、上課的具體時間、生成選課碼)、學生管理(批量導入上課學生名單、添加單個或多個學生、批量設定學生上課時間)、學生調課管理、助教管理(添加、修改、刪除助教)。
3)作業(yè)子系統(tǒng):發(fā)布作業(yè)、修改作業(yè)、批改作業(yè)、刪除作業(yè)。發(fā)布作業(yè)時首先輸入作業(yè)基本信息(作業(yè)名稱、最高成績、備注、設置評測語言),接下來從題庫中選擇題目添加到作業(yè)中,設置每道題的分值以及是否必做,設置作業(yè)的訪問權限,人工批改作業(yè)(可批量修改),作業(yè)統(tǒng)計分析,作業(yè)代碼打包下載。
4)比賽:比賽功能與發(fā)布作業(yè)類似,不同的是作業(yè)通常用來指定給老師授課的學生在規(guī)定時間必須完成的題目,而比賽面向的是全年級或者全校的所有學生,此外,跟作業(yè)子系統(tǒng)相比多了添加裁判用戶和在線問答功能。
學生:
1)題庫子系統(tǒng):可查看題庫中已公開的所有題目,在線提交代碼查看評測結果,查看題目評測歷史。
2)教學中心:查看教師發(fā)布的課程公告,下載課程學習資料,選課,提交調課申請。
3)作業(yè)子系統(tǒng):查看老師發(fā)布的作業(yè),并在線完成作業(yè)和填寫實驗報告。查看作業(yè)完成情況排行榜。作業(yè)截止后,查看各題示例代碼。
4)比賽:查看比賽,參加比賽,查看比賽結果。
系統(tǒng)運行過程中產(chǎn)生的所有數(shù)據(jù)(用戶、題目、作業(yè)、課程、評測結果等)都需要持久化保存到數(shù)據(jù)庫中,采用MySQL數(shù)據(jù)庫。根據(jù)系統(tǒng)功能需要,共設計了38張表,其中用戶表用來保存用戶信息;與題庫相關的表有8個,分別是題目分類表、題目信息表、題目測試數(shù)據(jù)包、題目與測試數(shù)據(jù)關聯(lián)表、題目訪問記錄表、測試數(shù)據(jù)自動生成器隊列、評測隊列、評測狀態(tài)表;與作業(yè)相關的表有11個:作業(yè)信息表、作業(yè)題目與設置、作業(yè)題目集關聯(lián)表、作業(yè)權限控制設置、作業(yè)訪問權限關聯(lián)、作業(yè)解題情況、作業(yè)解題情況與評測狀態(tài)關聯(lián)表、作業(yè)與評測狀態(tài)關聯(lián)表、調課請求表、實驗報告表、作業(yè)訪問黑名單;教學中心子系統(tǒng)共有10個:課程信息表、課程通知消息表、學院信息表、專業(yè)信息表、課程排課信息、排課選課情況、課程排課關聯(lián)表、教學資源庫、課程與教學資料關聯(lián)表、課程助教關聯(lián)表;比賽子系統(tǒng)共有7個:比賽信息表、比賽題目設置、比賽題目設置關聯(lián)表、比賽評測狀態(tài)關聯(lián)表、比賽題目解題情況、比賽題目解題情況與評測狀態(tài)關聯(lián)表、比賽選手問答表;還有1張表用來存儲全站設置信息。
借助在線評測教學輔助系統(tǒng)開展實驗教學首先需要建設課程題庫,與ACM比賽主要強調算法不同,該系統(tǒng)主要用于日常教學,用戶主要是本科低年級的學生,題目選取非常重要,既要貼近教材,難度適中,符合教學大綱需要,凸出課程的重點難點,還要生動有趣。為此程序設計教學團隊根據(jù)教材、教學大綱、本校學生特點設計了一系列由簡單到綜合、循序漸進的實驗題目。平臺于2015-2016第一學期在2015軟件工程專業(yè)試運行,到目前為止適合“C程序設計”日常教學的題目有幾百道,題目還將陸續(xù)更新補充。部分題目截圖如圖3所示。
根據(jù)一項生物心理學研究顯示,人腦類似一個反饋激勵系統(tǒng),在有效的信號刺激下,刺激的頻率越快,信息駐留在大腦中的時間就越長,有效及時的信息反饋能夠激發(fā)人腦的學習潛能和興趣[3]。為了激發(fā)學生的編程熱情,系統(tǒng)設計了作業(yè)排行榜和全站排行榜,排行榜采用類似ACM比賽的排名算法,首先是正確解題的數(shù)量,如果多名同學解題數(shù)量相同,再根據(jù)總用時進行排名,總用時由每道解答正確的試題的用時加上懲罰時間而成。每道試題用時從作業(yè)開始到題目解答被判定為正確為止,期間每一次錯誤的運行將被加罰20分鐘,未正確解答的試題不記時。每次作業(yè)都會生成排行榜,供師生查看,一方面便于學生了解所有人包括自己的作業(yè)完成情況,形成你追我趕的良好學習氛圍。另一方面教師可以對學生的學習情況了如指掌,并可根據(jù)學生的學習層次制定不同的學習方案,鼓勵學有余力的學生加入ACM協(xié)會,去挑戰(zhàn)課程外的難點。對于作業(yè)完成有困難的學生,老師可以深入了解具體情況,指定成績好的學生對其實行一對一的幫扶。圖4為某次作業(yè)的排行榜截圖。
圖3 “C程序設計”部分題目截圖
圖4 某次作業(yè)排行榜截圖
“C程序設計”課程的受眾面廣,以我院為例,是軟件工程、計算機科學與技術、數(shù)字媒體技術、電子信息科學與技術、電氣工程及其自動化5個系500多名大一新生的專業(yè)基礎課,學生的學習能力和基本素質參差不齊,所以課外自主學習習慣和能力的培養(yǎng)非常重要,只有引導學生根據(jù)自身的實際情況在課外大量編寫代碼,才能有效提升創(chuàng)新和實踐能力[15]。程序設計教學團隊為了有效吸引學生課外自主訓練,摸索出了多項激發(fā)學生編程興趣、營造學習氛圍的有效方法,其中一個方法就是鼓勵學有余力和愛好編程的學生參加學科比賽,教學團隊與學院ACM協(xié)會聯(lián)動,定期舉辦各種比賽,比如“ACM國慶歡樂賽”、“ACM跨年友誼賽”、“ACM光棍節(jié)男生賽”、“ACM校內新生賽”等等。老師根據(jù)比賽排名,對同學給予加分獎勵。經(jīng)過一系列課外自主訓練,有了一定的基礎和技術積累后,可以繼續(xù)參加學院舉辦的“ACM自主發(fā)展課堂”,優(yōu)秀的學生將會被選拔進入ACM校隊,經(jīng)過專門的集訓后,參加ACM省賽、區(qū)域賽、全球總決賽。從而達到依托平臺形成從課內實驗教學到自主訓練,再到學科競賽的創(chuàng)新型人才培養(yǎng)良性循環(huán)。
在線評測教學輔助系統(tǒng)對學生提交的程序源代碼實時評測,可以給學生提供365天7*24小時不間斷助教服務,具有人工評判所無法比擬的優(yōu)點,系統(tǒng)有別于傳統(tǒng)意義上面向比賽的OJ(OnlineJudge,在線評測)系統(tǒng),擁有更適合課程教學的教學中心和作業(yè)管理子系統(tǒng),為程序設計類課程如C/C++/Java/數(shù)據(jù)結構等提供了實驗教學平臺,對這些課程的實驗教學起到了很好的輔助作用,可以有效地提升教學質量。
[1]何欽銘,顏暉,蘇小紅,等.“程序設計基礎”課程教學實施方案[J].中國大學教學,2010(5):62-65.
[2]葛文庚,藺莉.程序設計基礎課程教學模式研究與設計[J].電子設計工程,2012(20):44-46.
[3]茅海軍,葉海榮.在線評測在C程序設計實驗教學中的研究與評價[J].中國校外教育,2012(12):162-163.
[4]The ACM-ICPC國際大學生程序設計競賽主頁[EB/OL].[2016-09-09].https://icpc.baylor.edu/.
[5]浙江大學在線評測系統(tǒng)[EB/OL].[2016-09-09].http://acm.zju.edu.cn/onlinejudge/.
[6]謝迪,李文新,郭煒.“百練”:一個程序設計技能訓練與水平測試平臺[J].合肥工業(yè)大學學報:社會科學版,2008,22(4):172-175.
[7]華中科技大學在線評測系統(tǒng)[EB/OL].[2016-09-09].http://acm.hust.edu.cn/.
[8]同濟大學在線評測系統(tǒng)[EB/OL].[2016-09-09].http://acm.#edu.cn/.
[9]杭州電子科技大學在線評測系統(tǒng)[EB/OL].[2016-09-09].http://acm.hdu.edu.cn.
[10]陳念年,李郁峰,李繪卓.基于在線評判系統(tǒng)的程序設計教學[J].計算機教育,2009(15):83-85.
[11]徐紅云,江捷斯,周釩.基于競教結合的“高級語言程序設計”實驗教學改革實踐[J].實驗技術與管理,2012,29(10):165-168.
[12]陳志,李夢澤,馬嫣,等.基于ACM程序設計競賽的常規(guī)教學改革[J].電氣電子教學學報,2011,33(6):18-20.
[13]苗桂君,劉勇,許南山,等.在線評測系統(tǒng)在程序設計類教學中的應用研究[J].計算機教育,2016(9):157-162.
[14]韓君澤,鐘美,劉東升.程序設計在線評測輔助教學系統(tǒng)的設計與實現(xiàn)[J].內蒙古師范大學學報:自然科學漢文版,2010,39(5):473-476.
[15]韓建平,劉春英,胡維華.“課內外貫穿,競賽教學融合”的程序設計教學模式[J].實驗室研究與探索,2014,33(6):169,176.
Design and application of online judge teaching assistant system
XIAO Hong-yu,LAN Rong-qi,WAN Zhi-qiang
(College of Information Technology,Zhuhai Campus,Beijing Normal Univerity,Zhuhai519087,China)
According to the needs and characteristics of experimental teaching of programming design and based on the analysis of the characteristics of the existed online judge system,design and development the online judge teaching support system of programming design courses,it was Successfully applied in the experimental teaching of C/C++/Java/data structure course.This paper describes the overall design goals of the system,technicalarchitecture,feature design,Database Design and the practices application.The results show that the system has realized the function of teaching resource management,programming assignments management,test bank management and users management,the most important thing is to realize the procedure exercise and the judgment process automation and standardization.The system is in good condition,Teachers and students are most appreciative of the system,it has a great role in promoting the quality of teaching.
online judge;teaching resources;experiment teaching;teaching assistant system
TN99
A
1674-6236(2017)23-0011-05
2016-10-09稿件編號:201610022
廣東省教育研究院教育研究課題(GDJY-2015-C-b048)
肖紅玉(1976—),女,江西信豐人,博士,副教授。研究方向:分布式水文系統(tǒng)、軟件工程、數(shù)據(jù)庫應用。