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