【摘 要】高中信息技術(shù)新教材將編程教育作為一項(xiàng)重要內(nèi)容,在教學(xué)實(shí)踐過程中存在著學(xué)生的練習(xí)代碼無法快速批改、無法進(jìn)行課堂評(píng)價(jià)和給予學(xué)生反饋等難題。筆者受信息學(xué)奧林匹克競賽自動(dòng)評(píng)測(cè)系統(tǒng)(OJ)的啟發(fā),基于開源軟件Moodle搭建了適用于高中Python教學(xué)使用的自動(dòng)評(píng)測(cè)系統(tǒng)。實(shí)踐表明,使用自動(dòng)評(píng)測(cè)系統(tǒng)可以大大減輕教師的作業(yè)判題工作量,同時(shí)可以給學(xué)生更加準(zhǔn)確及時(shí)的反饋,提高了學(xué)習(xí)者的學(xué)習(xí)動(dòng)力和積極性,取得了良好的教學(xué)效果。
【關(guān)鍵詞】Python;自動(dòng)評(píng)測(cè);Moodle;編程教育
【中圖分類號(hào)】G434 ? 【文獻(xiàn)標(biāo)識(shí)碼】B
【論文編號(hào)】1671-7384(2022)06-088-03
《普通高中信息技術(shù)課程標(biāo)準(zhǔn)(2017年版)》將計(jì)算思維確定為信息技術(shù)學(xué)科核心素養(yǎng)的四個(gè)核心要素之一[1]。Python語言重算法、輕語法、易入門的特點(diǎn),便于中學(xué)信息技術(shù)課程展開教學(xué),成為新教材的主要程序設(shè)計(jì)語言。
編程學(xué)習(xí)前期需要反復(fù)嚴(yán)格的上機(jī)代碼訓(xùn)練,這樣可以深化對(duì)代碼的理解,提高程序設(shè)計(jì)的熟練度,然而傳統(tǒng)條件下,教師批改學(xué)生提交的Python代碼作業(yè)是一項(xiàng)非常耗時(shí)耗力的枯燥工作。筆者借鑒信息學(xué)競賽使用的在線自動(dòng)評(píng)測(cè)系統(tǒng)實(shí)現(xiàn)自動(dòng)判題,基于開源軟件Moodle搭建了適用于高中Python教學(xué)使用的自動(dòng)評(píng)測(cè)系統(tǒng)(以下簡稱“Moodle自動(dòng)評(píng)測(cè)系統(tǒng)”),學(xué)生利用系統(tǒng)編寫并提交代碼,系統(tǒng)在幾秒內(nèi)快速對(duì)代碼進(jìn)行檢查和結(jié)果比對(duì)并給出檢查結(jié)果,將大大減少教師的判題工作量。
目前國內(nèi)已有將自動(dòng)評(píng)測(cè)系統(tǒng)應(yīng)用于信息技術(shù)教學(xué)的實(shí)踐和研究,經(jīng)過實(shí)踐證明,基于Moodle的在線評(píng)測(cè)系統(tǒng)是可行的,通過在線OJ應(yīng)用于信息技術(shù)教學(xué)具有重要意義。本文在LAMP環(huán)境下部署開源課程管理系統(tǒng)Moodle,安裝CodeRunner插件和Jobe服務(wù)器,實(shí)現(xiàn)Python在線自動(dòng)判題系統(tǒng)的快速部署,在教學(xué)應(yīng)用的過程中不僅減少了教師的工作量,還提高了學(xué)生的學(xué)習(xí)動(dòng)力和積極性,取得了預(yù)期的良好效果。
采用Moodle自動(dòng)評(píng)測(cè)系統(tǒng)的理由
當(dāng)前傳統(tǒng)的學(xué)生代碼作業(yè)批改一般過程為:學(xué)生根據(jù)項(xiàng)目任務(wù)使用代碼編輯器編寫代碼,調(diào)試運(yùn)行結(jié)果,然后把源代碼通過機(jī)房管理軟件或者FTP服務(wù)器提交給老師,老師在收到學(xué)生的代碼作業(yè)后,需要將每位學(xué)生的源代碼文件逐個(gè)打開,再編譯運(yùn)行,檢查代碼運(yùn)行結(jié)果是否正確,找出出錯(cuò)的原因,對(duì)學(xué)生的作業(yè)反饋一般在下一節(jié)上課前。這樣的作業(yè)判題工作量非常大,也比較枯燥,課堂評(píng)價(jià)無法開展,很少能對(duì)每位學(xué)生做出快速反饋,一般會(huì)在下一節(jié)課找出典型難點(diǎn)和共性問題進(jìn)行全體講解,教學(xué)反饋周期長,沒有針對(duì)性,批改難以正確客觀。長期以往,會(huì)出現(xiàn)學(xué)生提交作業(yè)的積極性不高或者應(yīng)付作業(yè)的情況。
因此,采用一種能夠自動(dòng)對(duì)學(xué)生提交的代碼進(jìn)行批改的系統(tǒng)成為優(yōu)化傳統(tǒng)代碼作業(yè)批改這一亟需解決問題的最優(yōu)辦法。
OJ是Online Judge的簡稱,即在線評(píng)測(cè)系統(tǒng),在系統(tǒng)后臺(tái)會(huì)對(duì)提交的程序進(jìn)行嚴(yán)格的測(cè)試,有的還會(huì)對(duì)運(yùn)行的時(shí)間和內(nèi)存作出限制。OJ系統(tǒng)最初應(yīng)用于信息學(xué)奧林匹克競賽中的自動(dòng)判題和排名,現(xiàn)廣泛應(yīng)用于各種程序設(shè)計(jì)訓(xùn)練和競賽的作業(yè)自動(dòng)提交判斷中。雖然信息學(xué)奧賽OJ系統(tǒng)已經(jīng)非常廣泛和成熟,但是二者有著明顯的差異,并不適合信息技術(shù)課堂教學(xué)。
常用的開源OJ主要針對(duì)信息學(xué)競賽的學(xué)生,一般題庫的數(shù)量大、難度大,僅限于訓(xùn)練答題,沒有課程管理,不適合剛?cè)腴T的普通班級(jí)學(xué)生的學(xué)情和學(xué)習(xí)進(jìn)度。基于Moodle的OJ很容易上手應(yīng)用,教師可以根據(jù)教學(xué)進(jìn)度和學(xué)生學(xué)情選擇設(shè)計(jì)每節(jié)課的練習(xí)題目,比較適合日常的信息技術(shù)教學(xué)。Moodle自動(dòng)評(píng)測(cè)系統(tǒng)則可以幫助教師根據(jù)所教班級(jí)學(xué)生的實(shí)際學(xué)情自主命制每節(jié)課的練習(xí)題。
采用Moodle自動(dòng)評(píng)測(cè)系統(tǒng),學(xué)生在系統(tǒng)網(wǎng)頁中編輯并提交代碼,系統(tǒng)會(huì)給出即時(shí)反饋,知道代碼運(yùn)行是否正確,教師在后臺(tái)可以快速可視化地查看作業(yè)得分統(tǒng)計(jì),一方面激發(fā)了學(xué)生完成作業(yè)的積極性,同時(shí)也便于教師進(jìn)行作業(yè)管理和課堂教學(xué)。
Moodle自動(dòng)評(píng)測(cè)系統(tǒng)原理與實(shí)現(xiàn)
Moodle是一個(gè)由澳大利亞教師Martin Dougiamas開發(fā)的基于建構(gòu)主義的課程管理系統(tǒng)(CMS)[2],它遵循GNU 公共許可協(xié)議,是一個(gè)任何人都可以免費(fèi)使用的自由的開源軟件,采用B/S模式。在國內(nèi)黎加厚等教育技術(shù)專家的推廣下,已成為深受教育工作者喜愛的一種可以快速搭建在線課程管理系統(tǒng)的工具[3]。Moodle采用模塊化面向?qū)ο蟮脑O(shè)計(jì)方法,不僅極大地方便了教師個(gè)人開展在線課程和網(wǎng)站管理,還具有極好的靈活性和可擴(kuò)展性,許多Moodle愛好者開發(fā)了品類豐富的實(shí)用插件,管理員可以像安裝App一樣在線快速地安裝和配置,并且可以和Moodle通信,統(tǒng)一管理。
新西蘭坎特伯雷大學(xué)計(jì)算機(jī)科學(xué)系的Richard lobb博士開發(fā)了一個(gè)名為“沙盒(Jobe)”的計(jì)算機(jī)程序自動(dòng)評(píng)測(cè)后端系統(tǒng)和名為CodeRunner的Moodle測(cè)驗(yàn)題插件,它使得Moodle可以添加代碼檢測(cè)試題,支持Python、C++等超過40種語言,并把自動(dòng)評(píng)測(cè)結(jié)果同步到Moodle平臺(tái)的作業(yè)統(tǒng)計(jì)中。Jobe服務(wù)是一個(gè)名為Docker的開源應(yīng)用容器平臺(tái),讓開發(fā)者可以將他們的應(yīng)用以及依賴包到一個(gè)可打包移植的鏡像中,然后發(fā)布到任何流行的 Linux或Windows操作系統(tǒng)的電腦上,也可以實(shí)現(xiàn)虛擬化。容器完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口[4]。用戶提交的作業(yè)代碼在相互獨(dú)立的虛擬化容器里編譯運(yùn)行,然后返回結(jié)果。
Moodle服務(wù)器采用LAMP環(huán)境,CodeRunner安裝在Moodle(3.0 版或更高版本)服務(wù)器上使用,運(yùn)行代碼的”沙盒”軟件(Jobe)安裝在具有足夠安全性和防火墻的單獨(dú)機(jī)器上,也可以部署在同一臺(tái)服務(wù)器上。但是,如果考慮到反應(yīng)速度或者應(yīng)用于考試,則建議使用單獨(dú)的服務(wù)器,CodeRunner插件需要管理員配置指向Jobe服務(wù)器的端口號(hào)。Jobe服務(wù)可以不單獨(dú)部署,該插件最初配置為連接到坎特伯雷大學(xué)的Jobe服務(wù)器以運(yùn)行作業(yè),但它提供的服務(wù)有限,僅對(duì)初步測(cè)試有用。
Moodle自動(dòng)評(píng)測(cè)系統(tǒng)的效率(所支持的并發(fā)用戶數(shù))與部署moodle的服務(wù)器有關(guān),假設(shè)學(xué)生代碼本身在幾分之一秒內(nèi)運(yùn)行,單個(gè)4核Moodle 服務(wù)器每分鐘可以處理大約60個(gè)測(cè)驗(yàn)問題,同時(shí)保持小于約 3~4 秒的響應(yīng)時(shí)間。
本文的工程實(shí)現(xiàn)過程如下:硬件采用戴爾R420服務(wù)器,支持整合和虛擬化的環(huán)境,服務(wù)器安裝一個(gè)linux發(fā)行版Ubuntu20.04操作系統(tǒng),然后部署和配置Apache2+PHP7.4+MySQL8.0服務(wù),在此環(huán)境下安裝Moodle3.11網(wǎng)站系統(tǒng)軟件包,在線安裝插件CodeRunner和Adaptive adapted for coderunner,最后部署和配置用于自動(dòng)評(píng)測(cè)的后端系統(tǒng)的Jobe服務(wù)器。然后進(jìn)行課程設(shè)置就可以進(jìn)行教學(xué)應(yīng)用了。
基于開源軟件Moodle可以免費(fèi)、快速地搭建自動(dòng)評(píng)測(cè)系統(tǒng),教師可以自行維護(hù),不需要第三方公司等,用到的模塊如圖1所示,一方面可以提升信息技術(shù)教師的專業(yè)素養(yǎng),另一方面便于教師自行設(shè)計(jì)題庫和內(nèi)容,比較適合個(gè)性化、精準(zhǔn)化的信息技術(shù)教學(xué)工作。
Moodle自動(dòng)評(píng)測(cè)系統(tǒng)的教學(xué)實(shí)踐效果
采用Moodle自動(dòng)測(cè)評(píng)系統(tǒng)的教學(xué)過程如圖2所示,學(xué)生提交用程序設(shè)計(jì)語言在線編寫的代碼后,系統(tǒng)在后端Jode內(nèi)編譯和運(yùn)行,將其與預(yù)設(shè)提供的測(cè)試用例進(jìn)行比較,以檢查程序是否正確,還可以設(shè)定根據(jù)提交次數(shù)給予具有一定懲罰機(jī)制的趣味化設(shè)置。
筆者本學(xué)期應(yīng)用Moodle在線評(píng)測(cè)系統(tǒng)的教學(xué)實(shí)驗(yàn)共有12節(jié),2個(gè)教學(xué)班共115人參加,使用過程中學(xué)生積極參與,教學(xué)效果明顯提高,以下數(shù)據(jù)來源于筆者采用Moodle自動(dòng)評(píng)測(cè)系統(tǒng)進(jìn)行“循環(huán)嵌套”教學(xué)的統(tǒng)計(jì)。
1.便于內(nèi)容管理
在傳統(tǒng)的信息技術(shù)課堂教學(xué)中,學(xué)生如果有知識(shí)遺忘需要查閱課本或者詢問教師,但是對(duì)于編程而言,課本上關(guān)于Python編程用到的知識(shí)點(diǎn)不夠完整,借助Moodle課程管理平臺(tái),可以將Python編程語言的基礎(chǔ)要點(diǎn)做成一個(gè)內(nèi)容網(wǎng)頁,便于學(xué)生在使用時(shí)快速檢索回顧。
統(tǒng)計(jì)數(shù)據(jù)顯示,“循環(huán)嵌套”知識(shí)頁面點(diǎn)擊量292次,學(xué)生反饋良好,認(rèn)為一方面可以查詢本節(jié)課用到的知識(shí)點(diǎn),另一方面還可以快速查詢以往課程的知識(shí)點(diǎn),有助于節(jié)約時(shí)間、提高學(xué)習(xí)效率。
2.便于即時(shí)反饋
采用Moodle自動(dòng)評(píng)測(cè)系統(tǒng),學(xué)生提交代碼就能即時(shí)判分,這也是教師使用自動(dòng)評(píng)測(cè)系統(tǒng)積極性最高的地方,讓初學(xué)編程的學(xué)生在課堂上找到要做的事,能感受到自己的進(jìn)步。
當(dāng)然這也帶來了課堂作業(yè)的應(yīng)試感,因此,教師需要采用不同的教學(xué)策略和語言引導(dǎo)學(xué)生擺脫應(yīng)試思維。采用自動(dòng)評(píng)測(cè)系統(tǒng)的目的并不是為了通過率或者數(shù)量,僅僅是一種快速評(píng)測(cè)代碼的工具而已,是為了幫助學(xué)生即時(shí)得到自己代碼在嚴(yán)格評(píng)測(cè)系統(tǒng)中的反饋,幫助他們找到進(jìn)步的成就感。根據(jù)自我效能感與學(xué)習(xí)倦怠成負(fù)相關(guān)的關(guān)系[5],提升學(xué)生的自我效能感有助于減少程序?qū)W習(xí)的壓力、枯燥等帶來的學(xué)習(xí)懈怠。
3.便于課堂評(píng)價(jià)和作業(yè)管理
傳統(tǒng)課堂的教學(xué)評(píng)價(jià)無法有效進(jìn)行,Moodle系統(tǒng)中的圖、表可視化的作業(yè)統(tǒng)計(jì)功能非常便于教師的課堂評(píng)價(jià)。以往教師需要大量的時(shí)間出題和維護(hù)題庫,通過Moodle自動(dòng)評(píng)測(cè)系統(tǒng),教師可以查看每節(jié)課隨堂練習(xí)題的學(xué)生完成情況、難度、區(qū)分度等,不斷根據(jù)學(xué)情優(yōu)化題庫,隨著代碼的積累,形成特色的題庫,有利于進(jìn)一步的教學(xué)。
本文介紹了基于Moodle的在線自動(dòng)評(píng)測(cè)系統(tǒng),其特點(diǎn)是集成于一個(gè)開源的在線課程平臺(tái),可以對(duì)學(xué)生的代碼做出即時(shí)反饋,并將作業(yè)結(jié)果同步至作業(yè)統(tǒng)計(jì)中,便于教師的作業(yè)管理。實(shí)踐證明它是管理和進(jìn)行編程教學(xué)的有力工具。未來將進(jìn)一步優(yōu)化自主試題挑選和命制,采用不同教學(xué)策略減輕應(yīng)試思維等;同時(shí)優(yōu)化服務(wù)器的性能,為學(xué)習(xí)者搭建一個(gè)快捷、有效的編程學(xué)習(xí)環(huán)境,提高學(xué)生的編程能力,有效提升教學(xué)效果。
參考文獻(xiàn)
任友群,黃榮懷. 高中信息技術(shù)課程標(biāo)準(zhǔn)修訂說明[J].中國電化教育, 2016(12): 1-3.
秦健,杜曉輝,馬紅亮. Moodle學(xué)習(xí)管理平臺(tái)交互性的實(shí)證分析[J]. 中國電化教育, 2011(2): 86-90.
黎加厚,馮均芳. 黎加厚教授答魔燈(Moodle)相關(guān)問題[J]. 信息技術(shù)教育,2006(12): 6-9.
邱建新. 基于Docker容器技術(shù)的Linux在線實(shí)驗(yàn)環(huán)境設(shè)計(jì)[J]. 信息技術(shù),2022(2): 48-52+58.
杜曉輝,賈麗萍. 停課不停學(xué)期間中學(xué)生自我效能感與在線學(xué)習(xí)倦怠的相關(guān)性分析[J]. 中小學(xué)心理健康教育,2020(11): 44-46.