Moodle自动评测系统在高中信息技术教学中的应用探究

【摘 要】高中信息技术新教材将编程教育作为一项重要内容,在教学实践过程中存在着学生的练习代码无法快速批改、无法进行课堂评价和给予学生反馈等难题。笔者受信息学奥林匹克竞赛自动评测系统(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.

相关热词搜索: 信息技术 探究 评测