劉欽波
隨著《普通高中信息技術課程標準(2017年版)》的發布,編程教育走進中小學課堂。這對教師的編程教學也提出了更高的挑戰——如何保存學生提交的程序?如何在線運行學生的程序?如何對學生的程序進行評測?
當前,大部分中小學都在使用Moodle網絡教學平臺進行教學,該網絡教學平臺雖然可以保存學生提交的程序,但還不能在線運行程序,查看運行結果,更不能對程序進行評測。網上雖然有許多在線編程工具,如菜鳥工具等,但這些在線編程工具并不能保存提交程序,即使能夠保存學生提交的程序,也是保存在第三方的平臺上,不方便教師管理查看這些程序。

基于以上原因,筆者提出建設基于Moodle平臺的在線編程實驗室,用于教師在編程教學中保存學生提交的程序,并可以在線運行程序和對程序進行評測。通過這個在線編程實驗室,學生在有網絡的地方就可以在線編程,并不需要安裝本地開發環境,真正做到隨時隨地都學習編程。
基于Moodle平臺的在線編程實驗室可以用Moodle開源平臺和Virtual programming lab(VPL)這個插件來實現,VPL插件也是完全開源的。
由于是開源平臺,Moodle可以根據個人需求量身定制,其模塊化設置和可互操作設計允許開發人員開發插件并集成外部應用程序以實現特定功能。[1]本文探討的在線編程實驗室的功能就是用插件來實現的。
虛擬編程實驗室(VPL)是Moodle的一個活動模塊,提供了一個集成的開發環境,可以用于學生在線編程的教學與管理,其特點為:允許學生在瀏覽器中編輯程序源代碼;學生可以在瀏覽器中以交互方式運行程序;學生和教師可以運行測試來評測程序;允許搜索文件之間的相似性;允許設置編輯限制并避免外部文本粘貼。[2]
VPL由三個元素組成:Moodle Server、Student Browser(基于瀏覽器的代碼編輯器)和Jail Server。
學生與系統交互過程如圖1所示。學生在基于瀏覽器的代碼編輯器中編寫好代碼,當提交程序時,Moodle服務器將學生程序打包成xmlrpc消息,并將其發送到Jail Server,在這里學生提交的程序會在沙盒環境中執行,并將捕獲的輸出發送回Moodle服務器。[3]
代碼編輯器是一個基于瀏覽器的集成開發環境,它具有在線編輯、運行、調試和評估程序代碼等基本特性。代碼編輯器使用了Java Scriipt、Ajax、HTML5和WebSocket技術,在客戶端上編輯和執行代碼需要支持HTML5和WebSocket的瀏覽器。該模塊已在最新版本的IExplorer、Chrome、FireFox、Opera和Safari上成功測試過。
Jail Server是負責在安全環境中編譯和執行學生提交代碼的服務器,所接收到的請求在沙盒中執行。當執行結束時,所有由執行程序創建的文件都將被刪除,因而每次執行都是從一組虛擬用戶中隨機選擇。[4]
1.測試環境
測試環境為Windows7+ Oracle VM VirtualBox+ ubuntu14.04,Moodle平臺安裝在Windows7操作系統的主機上,Jail Server安裝在虛擬機中,虛擬機的操作系統為ubuntu14.04。
2.安裝Moodle平臺的VPL插件

登錄網址(https://moodle.org/plugins/view.php?plugin=mod_vpl)下載VPL插件。打開網址后,要在圖2右邊“Your Moodle version”選擇Moodle平臺的版本,筆者選擇的Moodle平臺版本為3.4.1,因此選擇Moodle 3.4,選擇后網站的界面如圖3所示。這時,單擊Download按鈕就可以下載VPL插件了,其版本為3.3.4。解壓后,將VPL目錄復制到Moodle安裝目錄的mod目錄中,然后以管理員身份登錄Moodle平臺,更新數據庫,VPL插件就安裝成功了。
3.安裝Jail Server服務器
Jail Server服務器要安裝在虛擬機中,虛擬機的操作系統必須是Ubuntu、Debian或Centos。筆者安裝的操作系統是Ubuntu14.04,設置虛擬機的網絡連接方式為“橋接網卡”。需要注意的是服務器的軟硬件要求,32位版本比64位版本更好用,因為32位版本比64位版本消耗更少的內存和CPU。下面是安裝Jail Server服務器的具體步驟:
①下載vpl-jail-system安裝包,筆者安裝的是2.0.1版本,命令為:wget(http://vpl.dis.ulpgc.es/releases/vpl_jail_system-2.0.1.tar.gz。
②解壓安裝包,安裝vpl-jail-system,命令為:sudo./install-vpl-sh。
③系統提示是否安裝wildcard certificates時,選擇 no,等待系統安裝完畢。
④在瀏覽器中輸入localhost進行測試,如果瀏覽器顯示的信息為“Ok”,說明安裝成功。
4.配置Python開發環境
首先,Ubuntu14.04默認的開發環境為Python2,要安裝Python3可以用下面的命令:
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python3.6
然后,設置Python3.6為默認開發環境:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
接著輸入sudo update-alternatives --config python,根據數字選擇想要的Python版本。這時,Python及其對應的pip也都變成默認模式。
最后安裝pip工具,輸入命令:sudo apt-get install python3-pip。
5.配置Moodle平臺的VPL插件屬性
以管理員身份進入Moodle平臺,依次點擊網站管理—插件—Virtual programming lab,進入VPL插件設置界面。如上頁圖4所示,在Execution servers list右側的文本框中添加Jail Server的訪問地址。
筆者首先添加了一個名為“Pyton編程第一課”的活動或資源,類型選擇“Virtual programming lab”。接著,進入“Pyton編程第一課”活動,單擊Test activity—Edit就進入了在線編程界面(如圖5)。

在這里可以編輯源代碼,也可以保存編程的結果。單擊小火箭圖標可以運行程序,程序運行時會出現一個控制臺窗口,顯示運行的結果和相關信息如圖6所示。到這里,一個在線編程實驗室就搭建好了,有興趣的讀者可以試一試。
參考文獻:
[1]About moodle[EB/OL].https://docs.moodle.org/36/en/About_Moodle.
[2]What is VPL?[EB/OL].http://vpl.dis.ulpgc.es/index.php/about/what-is-vpl.
[3]Dominique Thiébaut. Automatic evaluation of computer programs using Moodle's virtual programming lab (VPL) plug-in[Z].Consortium for Computing Sciences in Colleges.2015:145-151.
[4]J.C. Rodríguez, E. Rubio Royo, Z. Hernández.Scalable architecture for secure execution and test of students' assignments in a virtual programming lab[G].Iated.2011:4315-4322.