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