基于Moodle平台的在线编程实验室的建设
刘钦波
● 背景
随着《普通高中信息技术课程标准(2017年版)》的发布,编程教育走进中小学课堂。这对教师的编程教学也提出了更高的挑战——如何保存学生提交的程序?如何在线运行学生的程序?如何对学生的程序进行评测?
当前,大部分中小学都在使用Moodle网络教学平台进行教学,该网络教学平台虽然可以保存学生提交的程序,但还不能在线运行程序,查看运行结果,更不能对程序进行评测。网上虽然有许多在线编程工具,如菜鸟工具等,但这些在线编程工具并不能保存提交程序,即使能够保存学生提交的程序,也是保存在第三方的平台上,不方便教师管理查看这些程序。
基于以上原因,笔者提出建设基于Moodle平台的在线编程实验室,用于教师在编程教学中保存学生提交的程序,并可以在线运行程序和对程序进行评测。通过这个在线编程实验室,学生在有网络的地方就可以在线编程,并不需要安装本地开发环境,真正做到随时随地都学习编程。● 实现方式
基于Moodle平台的在线编程实验室可以用Moodle开源平台和Virtual programming lab(VPL)这个插件来实现,VPL插件也是完全开源的。
由于是开源平台,Moodle可以根据个人需求量身定制,其模块化设置和可互操作设计允许开发人员开发插件并集成外部应用程序以实现特定功能。[1]本文探讨的在线编程实验室的功能就是用插件来实现的。
虚拟编程实验室(VPL)是Moodle的一个活动模块,提供了一个集成的开发环境,可以用于学生在线编程的教学与管理,其特点为:允许学生在浏览器中编辑程序源代码;学生可以在浏览器中以交互方式运行程序;学生和教师可以运行测试来评测程序;允许搜索文件之间的相似性;允许设置编辑限制并避免外部文本粘贴。[2]● VPL系统架构及运行原理
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.