黃建昌 孫娜 劉振超
【摘要】針對當前傳統(tǒng)計算機專業(yè)的教學現(xiàn)狀,提出了新工科背景下傳統(tǒng)計算機編程課程面臨的一些問題。同時,在大數(shù)據(jù)、人工智能等不斷出現(xiàn)的大環(huán)境下,為了提高編程課程考核的合理性、公平性,本文基于vue.js和Django框架,構(gòu)建了一個在線評測系統(tǒng)。
【關(guān)鍵詞】 課程改革 在線評測 操作系統(tǒng) 數(shù)據(jù)庫
【課題】課題名稱1:河北農(nóng)業(yè)大學第十批教研項目:基于《C語言程序設(shè)計》課程的在線考試系統(tǒng)設(shè)計(課題編號:2018YB04);課題名稱2:河北農(nóng)業(yè)大學2018年大學生創(chuàng)新創(chuàng)業(yè)訓練計劃項目:針對編程課程的在線考試系統(tǒng)設(shè)計(項目編號:2018026)。
【中圖分類號】G64 【文獻標識碼】A 【文章編號】2095-3089(2019)01-0253-01
引言
隨著新工科概念的提出,越來越多的行業(yè)與計算機專業(yè)密不可分。針對新工科人才能力培養(yǎng)需求,大學生計算機編程能力是新工科人才能力組成的重要部分。其中,《C語言程序設(shè)計》作為大多數(shù)高效的計算機專業(yè)基礎(chǔ)課則顯得尤為重要。在傳統(tǒng)教學中,編程課程考核多以紙質(zhì)試卷進行,不能非??茖W合理的評判出一個學生的編程能力高低。 針對這些問題,本文設(shè)計了一個在線評測系統(tǒng)(Online Judge,簡稱“OJ”)。OJ系統(tǒng)能夠編譯和執(zhí)行代碼,并使用預設(shè)數(shù)據(jù)測試這些程序,從而分析出用戶提交代碼的正確性。只要有一臺計算機或一部手機,用戶隨時隨地都可以登陸賬號去進行編程練習并由系統(tǒng)進行評測,簡化了程序的評測過程,提高了學生的學習效率,減輕了教師的教學負擔。
1.系統(tǒng)概述
OJ是一個在線測評系統(tǒng)。用戶注冊時可以選擇身份(學生、老師或管理員),使用手機號(或郵箱)、學號及身份證號完成注冊。用戶登錄后,可以在線進行編程練習,系統(tǒng)會對用戶提交的代碼進行編譯,生成可執(zhí)行文件并執(zhí)行。代碼通常在受限制的環(huán)境中運行,包括時間限制,內(nèi)存限制等。代碼的輸出會被OJ系統(tǒng)捕獲,然后通過與預先設(shè)計的測試數(shù)據(jù)比較,對程序源代碼的正確性進行驗證。這樣就達到了在線測評的目的,實現(xiàn)了教育的信息化。該系統(tǒng)整體可以分為web部分和judge部分,web部分又分為前端和后臺,前端網(wǎng)頁以JS作為開發(fā)語言,使用的是流行的JS框架vue.js,輕量化后端以python作為實現(xiàn)語言,使用的框架是Django。
2.系統(tǒng)設(shè)計
2.1操作系統(tǒng)的選擇
從原理上來看,操作系統(tǒng)選擇Windows或Linux均可。但兩者相較之下,Linux系統(tǒng)更加安全穩(wěn)定,服務器不容易崩潰,而且Linux非常適合阻止或防止可疑惡意軟件進入并影響整個系統(tǒng)的性能。此外,往長遠打算,如果將來把該OJ系統(tǒng)用于正規(guī)的比賽,使用Windows系統(tǒng)需要商業(yè)授權(quán),使用Linux系統(tǒng)更加經(jīng)濟。綜合以上因素,本文選擇了Linux操作系統(tǒng)。
2.2docker部署
docker是一個開源的應用程序容器引擎,允許開發(fā)人員將其應用程序和依賴項打包到便攜式容器中。系統(tǒng)的web部分和judge部分,都是以一個docker容器運行。在web部分,系統(tǒng)會將網(wǎng)站封裝成 docker鏡像,然后將其下載到服務器,使其可以獨立運行。此外,系統(tǒng)利用Postgresql和Redis構(gòu)建了后臺數(shù)據(jù)庫,這兩個數(shù)據(jù)庫也分別以一個docker容器運行,也就是說,整個系統(tǒng)一共有4個docker容器在運行。這四部分獨立運行,互不影響。
3.運行方式
系統(tǒng)將用戶提交的源代碼進行編譯,生成“.exe”文件并執(zhí)行。其輸出結(jié)果會被OJ系統(tǒng)捕獲并保存,然后將輸出結(jié)果與正確結(jié)果比較。如果編譯正確,輸出和正確答案一致,且程序運行沒有超出限定的時間和限定的內(nèi)存,則認為用戶提交的源代碼正確,即Accepted(AC)。否則報出相應錯誤:如答案錯誤、運行超時、內(nèi)存超限等,并向用戶反饋程序的使用內(nèi)存、運行時間和其他信息。具體的運行方式如圖2所示。
4.系統(tǒng)需求
系統(tǒng)用戶角色有三種:學生、教師和管理員。
(1)學生用戶注冊時選擇學生身份,使用手機號(或郵箱)、學號和身份證號進行注冊,每個學號只能注冊一個賬號。注冊后可以登錄,登錄系統(tǒng)后可以進行練習,在線提交代碼,提交后經(jīng)過系統(tǒng)測評會給出結(jié)果。學生進入測評狀態(tài)頁面,即可查看做題情況。
(2)在教師用戶注冊并登錄后,他可以對問題庫進行更改,創(chuàng)建新問題或修改和刪除問題,并檢查每個問題的正確率。
(3)管理員可以對后臺數(shù)據(jù)庫進行管理。
5.結(jié)語
在新工科的背景下,學習各種計算機編程語言已經(jīng)受到了更多人的重視。為了加強學生之間的學習交流,簡化程序的評估過程,OJ系統(tǒng)順應時代潮流而生。這對開展計算機相關(guān)教育,增強學生的計算機專業(yè)素養(yǎng)起著至關(guān)重要的作用,大大提高學生應用程序設(shè)計解決實際問題的能力。
參考文獻:
[1]李偉光,陳希.GOJ系統(tǒng)的研究與實現(xiàn). 科技創(chuàng)新導報, 2015(28): 第46-47+50頁.
[2]梁嵩,王建新.在線程序語言評測系統(tǒng)的設(shè)計與實現(xiàn). 計算技術(shù)與自動化,2010(02): 第128-132頁.
[3]楊婧.基于容器技術(shù)的廣播電視PaaS平臺建設(shè). 廣播與電視技術(shù), 2017(07):第46-48頁.
[4]蔡云龍, 基于Docker的私有云系統(tǒng)的設(shè)計.電子產(chǎn)品世界, 2016(04): 第46-49+56頁.
[5]梁嵩.基于Web的程序評測系統(tǒng)的設(shè)計與實現(xiàn),中南大學,2010.
[6]熊茜.基于在線判題系統(tǒng)的C語言實驗教學改革. 重慶科技學院學報(社會科學版), 2015(10)
[7]何嘉,杜斌.探討JAVA對SQL數(shù)據(jù)庫訪問的一種新嘗試. 成都信息工程學院學報, 2002(01)