孫丹鵬
(曲靖師范學院信息與教育技術中心 云南 曲靖 655011)
本文提出基于Moodle環境搭建在線編程評測系統,學習者可以在有網絡的地方就可以在線編程,且系統能夠及時評測反饋給學習者,減輕教師工作,也方便學習者更有效的習得編程技能。基于這種在線編程與測評系統學習環境,更有助于學習者的編程技能的培養與學習。
Moodle是一個用于建設網絡課程和站點的課程管理系統,是為支持社會建構主義教育框架而設計的全球性開發項目。Moodle作為開源軟件免費提供,遵循GNU通用公共許可協議[1]。它集IT、教學、管理、社會性交互等多重維度為一體,協助學習者共同完成知識建構的開放網絡平臺,具有門檻低、便于操作、功能強大、開放兼容等優勢[2]。Moodle系統在學生參與、課程傳遞、內容制作、用戶操作、內容組織及適應多種學習活動等方面表現優秀。
Virtual programming lab(VPL)[3],虛擬編程實驗室,是一個免費的Moodle活動模塊插件,提供了一個集成環境可開展在線計算機編程的教學與管理。其程序代碼編輯、運行編譯和自動評價的特點使得學生的學習過程和教師的評價任務比更簡單容易。其顯著特征是:基于瀏覽器編輯程序源代碼;學習者可以直接在瀏覽器中運行交互式程序;可以運行測試來檢測程序代碼是否正確。允許搜索文件之間的相似性以審查抄襲;允許設置編輯限制和避免直接外部文本粘貼等。
VPL主要有三個組成部分:Moodle模塊、基于瀏覽器的代碼編輯器和Jail組件(圖1)。

圖1 VPL體系架構
VPL作為一個管理程序分配的活動模塊安裝到Moodle插件模塊中,其使用簡單容易,Moodle模塊化組件方式提供了這種組件的典型特征(備份和恢復、與分級圖書的集成、課程重置、事件控制、基于角色的訪問等)。代碼編輯器為程序編輯、運行提供基本的功能,用于調試和評估程序代碼,還包括諸如提交管理、評估支持和反抄襲特征等特定功能。Jail組件是負責在安全環境中編譯和執行由學生提交的代碼的服務器。它基于Linux命令來提供主機文件系統的讀寫權限,具有很高的安全性。運行或評測程序文件提交至少需要一個Jail服務器。Jail服務需要Ubuntu或RedHat兼容的Linux發行版。Jail服務器支持交互和非交互執行的請求[4]。
為了在控制臺中能順利提供執行功能,Moodle服務器需要至少打開兩個端口,建議使用更大的端口。且執行提交的PHP腳本需要比一般應用更多的時間,因此在PHP配置中需要配置增加時限的設定。
VPL模塊使用雙代理與瀏覽器客戶端進行通信,以發送客戶端的請求,并同時與Jail服務器的另一側通信,以執行與這些請求相關聯的運行任務。這允許多種網絡拓撲結構。最簡單的部署是在同一臺計算機上配置并運行Jail服務器和Moodle服務器,其缺點是失去了隔離服務器的安全保障。另一種部署方式是將Moodle服務器與一個或多個單獨的Jail服務器連接,這些Jail服務器可以在配置在專用網絡中。在一個或多個Moodle服務器之間共享多個Jail服務器,這是一種比較可行的組織架構,改進了資源消耗。這種配置可以通過改變Moodle服務器使用的Jail服務器的數量來適應工作量峰值,可以更靈活的方式參與執行任務的需求變化。其缺點是Jail服務器必須在公共域中,以便在不增加網絡復雜度的情況下使它們能夠適用于所有Moodle的服務器。
使用多個Jail服務器不僅支持可伸縮性和提高性能,而且還提供容錯性。當VPL模塊接收執行請求時,它接收可用Jail服務器的列表,并隨機選擇未標記為具有先前故障的一個進入特定的時間范圍。然后VPL向服務器發送可用性請求;如果對該請求的響應是執行的,則將執行請求分配給服務器,否則選擇新的服務器。如果沒有找到服務器,則重復考慮先前失敗的服務器的過程。(圖2)

圖2 VPL體系架構
在線編程與測評系統的功能在于學習者提交用程序設計語言來在線編寫的代碼后,系統對代碼進行編譯和運行,看其是否符合時間和空間的要求,然后與標準的設計好的測試數據進行對比來判斷程序的正確性[5]。在Moodle平臺系統中采取建立課程活動模塊的方式來搭建課程學習活動。VPL環境集成在Moodle平臺環境中,能為學生提供多種編程任務活動,支持多中語言的學習,如 C,C++,C#,Haskell,FORTRAN,Java,Octave,Pascal,PHP, Prolog,SQL,Ruby,Python,Scheme,Vhdl等。
采用VPL可以用來配置、管理和評估一系列在線編程學習活動,這些活動可以按類型或范圍進行分類。根據類型,學習活動可以是:范例、完形填空或拼圖練習和代碼開發練習。范例方式取決于學生是否可以修改代碼,可修改示例代碼可隨時讓學習者將其重置為原始狀態。完形填空和拼圖練習尤其適合初學者,其為學生提供問題描述和解決問題的程序代碼,只是學生必須修改代碼以完成任務。如部分代碼已刪除,學生必須填空,拼圖練習中代碼已全部打亂,學生必須對其進行排序,以便以適當的方式完成代碼工作。
本文闡述了基于Moodle環境的在線編程與測評系統,它是管理、構建和測評計算機程序練習的有力工具。這個工具的主要優點是它集成在一個開源的學習管理系統中,其特點是它能夠根據程序測試產生完整的測評報告,并及時給學習者提供反饋信息。此外,所需的程序測試可以以非常靈活的方式進行配置,從簡單的輸入輸出測試到單元測試全都可以覆蓋,完全能滿足日常編程教學需求,為學習者提供了一個更加便捷、有效的編程學習環境。