APP下载

基于程序能力提升的程序设计基础课程在线评测平台搭建与应用研究

2024-03-20

无线互联科技 2024年2期
关键词:题库评测程序设计

朱 鹏

(贵州交通职业技术学院,贵州 贵阳 550025)

0 引言

程序设计基础类课程(“C语言程序设计”“Java程序设计”“Python程序设计”)是职业院校电子信息大类(物联网应用技术、计算机网络技术、大数据技术与应用等)的专业基础课,教学目标是让学生能针对具体问题进行分析,熟练掌握程序设计语言进行程序实现。在教学实践过程中,由于课程课时的限制和学生接受能力的差异,教师很难兼顾所有学生的掌握情况。一些学生可能在课程结束后仍然无法完全掌握程序设计的基本概念和方法,而另一些学生则可能会觉得课程内容过于简单,缺乏挑战性。加上程序设计类课程是实践课,需要进行大量的编程练习,而在授课过程中,基本上是大班教学,故教师很难及时了解每个学生的完成情况,也无法第一时间对学生完成的程序进行验证。初学者常出现各种错误,学习积极性很容易受到影响。为夯实学生的编程基础,本文使用Hydro搭建了一个程序设计基础课程的在线评测平台,通过在线评测平台进行教学实践,教学效果良好。

1 在线评测平台搭建

1.1 在线评测平台介绍

在线评测(Online Judge,OJ)系统起源于美国计算机协会(Association for Computing Machinery,ACM)国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,ACMICPC)。随着ACM竞赛近30年的发展,各大高校纷纷开发了属于自己的在线评测系统。其中,国外知名高校的在线评测系统有美国弗吉尼亚大学的UVA OJ系统,国内最早开发在线评测系统的高校是浙江大学[1]。它是一个基于Web的在线评测系统,该系统提供了大量的编程题目和在线编辑器,用户可以在线编写、测试和提交代码,系统会根据用户提交的代码实时反馈,方便学生自我检测和提高编程能力。随着近些年社会对信息学奥赛的重视,互联网也出现了“洛谷”“信息学奥赛一本通C++评测系统”“计蒜客”等编程网站,便于编程爱好者刷题、学习。

1.2 在线评测平台选择

通过对互联网上各评测系统进行调研发现,各高校、商业网站开发的在线评测系统大多是对基于开源的在线评测平台进行二次开发,这些开源平台为开发者提供了丰富的功能和工具,使得开发者能够快速地搭建自己的在线评测系统。各高校的评测平台主要用来校内课程教学、竞赛训练和选拔,对外只开发个人用户注册功能;各商业网站开发个人用户注册,提供个人刷题功能。两者均难以实现教师课程教学的过程化管理和比赛定制。为此,本文利用开源的在线评测平台搭建了一个学校自主的评测平台,供本校程序设计类课程教学使用。通过使用这个平台,教师可以更加方便地进行课程教学的过程化管理,有助于提高教学质量和学生的学习效果。通过比较Vijos、Hdyro、HustOJ、QDUOJ等开源在线平台发现,Hydro采用B/S架构,支持 C/JAVA/Python 等程序的自动评测,支持一键安装,使用MongoDB数据库,有完备的权限管理系统、域功能,并提供了题库、作业、讨论、排名等功能,还可通过安装附加组件进行扩展,功能强大,能满足学院程序设计类课程教学使用[2]。

1.3 Hydro在线评测平台搭建

Hydro支持使用脚本一键搭建,这种搭建方式不仅降低了安装难度,还提高了搭建效率,使得用户可以在短时间内快速搭建起在线评测平台。在安装之前,用户需要在GitHub仓库下载安装脚本,在装有Ubuntu 20.04的服务器上运行相关指令就可直接安装。安装完成后,通过服务器访问网页端,设置超级管理员账号,修改配置,即可以构建一个集教学、作业、考核为一体的自动评测平台。在线评测平台搭建好后,可以创建管理员、教师和学生3类用户。管理员可以导入用户、设置域、导入题库,对平台进行维护;教师可以导入题库、布置作业、查看学生的提交情况;学生可以通过平台参与练题,完成作业及形成性考核。

2 在线评测平台的应用

2.1 在线评测平台功能

在线评测平台具有用户管理、题库、作业、比赛、讨论、评测记录、排名功能,具体功能如下[3]。

用户管理:包括教师管理和学生管理。教师管理主要有权限管理、域管理;学生管理包括用户导入、密码修改。导入成功的用户可以访问所有域。

题库管理:题库管理的学生权限为查看、搜索题目;教师权限为题目导入及创建题目。教师导入或创建题目后,教师和学生就可以在题库中查找题目并进行代码提交。

训练管理:训练计划可以按章节进行设置,教师从题库中选择题目创建训练计划,学生点击参加训练计划,教师可以查看已参加训练计划的同学的训练完成情况。教师可以创建多组训练计划,学生可以根据自身情况选择参加哪组训练计划。

作业管理:包括创建、编辑和删除作业。创建作业时,可以设置作业标题、开始/结束时间、分配给指定用户、题目。教师创建好作业后,学生可以认领作业。

比赛管理:包括创建、编辑比赛。创建比赛后,学生用户可以参加比赛,教师可以查看学生的成绩。

讨论管理:用户选择题目后,可以创建讨论。讨论创建好后,用户可以进行跟帖回复。

评测记录管理:教师用户可以通过用户名/UID、题目、比赛、语言、状态查看用户的提交评测情况。

2.2 题库管理

题库是整个在线评测平台的核心[4],为学生和教师提供了丰富的题目资源。题库中的题目可以从Hydro中导入,通过导入功能,可以将其他 OJ题目导入本站。与此同时,题目的标题、题面、标签和分类都将会被自动导入,导入后可以使用PreferredPrefix选项来进行题号重排。此外,教师也可以使用创建题目的功能创建题目。题目创建好后,教师可以在作业管理、训练管理和比赛管理模块中引入题库中的题目。

2.3 创建题目

创建题目时,可以设置题目ID、题目标题、是否隐藏、标签和题目难度。在题目编辑中,可以使用Markdown语言进行编写,增加题目的可读性。与此同时,还可以导入公式和图片,使题目变得丰富,创建题目操作界面如图1所示。题目创建好后,在题库中,可以使用题目编号、题目标题、标签进行搜索。在线评测平台支持创建简单的OJ题目、函数交互型题目、全自动对拍题和客观题。

图1 创建题目操作页面

2.4 测试数据生成

题目创建好后,需要为该题目创建测试数据。测试数据用于检查所编写程序是否能够按照预期工作,也用于测试应用程序的极限或通过边界值测试确定其突破点[5]。在线评测平台中,一个题目可以设置多组测试样例来验证程序是否正确。在测试数据的设计中,本文采用了语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖等方式进行测试数据的设计。

在线评测平台的测试数据格式分为自动模式和使用配置文件2种。自动模式直接选择文件上传或将文件拖拽至相应位置上传,或者上传.zip格式文件,系统会自动进行解压,测试数据上传页面如图2所示。使用配置文件模式则需要上传config.yaml文件。

图2 测试数据上传页面

在实际测试数据样例生成过程中,采用Cyaron 进行数据生成。Cyaron是基于 Python 的开源软件,用于快速且方便地生成 OJ 题目的测试数据。在形成一个完整的数据生成器之前,需要编写程序对应题目的标准程序,编译之后得到一个可执行文件,再通过Python程序调用Cyaron 提供的函数进行数据生成,生成的输入、输出数据会分别存放到指定文件中。

2.5 创建作业

题目创建成功后,教师就可以进行作业创建。创建作业时可以设置作业的标题、开始时间、结束时间、分配给哪个班级、布置题目和内容,作业创建完成界面如图3所示。创建作业的内容处支持Markdown语言。创建作业时,可以将本节课的授课内容写到内容设置处,作业创建好后该内容会在作业介绍处显示,这个内容可以作为课件,教师可以用来授课,学生可以用来参考、学习。

图3 作业创建完成界面

3 在线评测平台在课程教学过程中的应用实践

该平台已进行了2年的实践。共有2021/2022级5个班级约300余名学生通过平台完成了程序设计基础课程的学习。通过排名功能查看可知,共有20%的同学在题库中完成了70道以上的练习题,有98%以上的同学完成了50道以上的练习题。充分表明学生对在线评测平台的接受度和使用情况良好。

3.1 教师方面

教师通过管理题库、布置作业、查看成绩表,实现教学任务的过程化管理[6]。首先,借助平台功能,教师可以设计各种形式的教学活动,如在线作业、考试等,从而更好地满足学生的学习需求。其次,通过成绩表功能,教师更容易掌握学生的学习情况、学生的弱项,便于更针对性地教学或调整教学进度。

3.2 学生方面

学生通过评测系统的题库功能,提前知晓课程的目标任务,并可以直接在平台上进行练习,利用实时反馈来检验自己的学习成果。题库还提供了多样化的题目类型和难度等级,满足了不同层次学生的学习需求,同时还可以与其他同学进行比较和竞争,激发了学生的学习热情和积极性,实际编程能力有了大幅提高。

4 结语

本文分析了如何利用Hydro搭建一个教学在线评测平台,并就平台的主要功能进行了介绍。在电子信息类专业程序设计类课程教学实践中,引入在线评测平台进行教学,规范统一教学内容,利用实时评测系统的反馈提高课堂教学效率,激发了学生的学习动力,提高了学生的编程能力,取得了良好的教学效果。

猜你喜欢

题库评测程序设计
“勾股定理”优题库
次时代主机微软XSX全方位评测(下)
次时代主机微软XSX全方位评测(上)
“轴对称”优题库
基于Visual Studio Code的C语言程序设计实践教学探索
“轴对称”优题库
“整式的乘法与因式分解”优题库
从细节入手,谈PLC程序设计技巧
攻坡新利器,TOKEN VENTOUS评测
Canyon Ultimate CF SLX 8.0 DI2评测