迪力夏提· 多力昆 1,2,3,孟小艳 1,2,3,赵新苗 1,2,3,徐 金 1,2,3,努尔艾力· 艾则孜 1
1. 新疆农业大学 计算机与信息工程学院;
2. 智能农业教育部工程研究中心;
3. 新疆农业信息化工程技术研究中心
摘 要:针对编程课程的规模化教学面临作业批改效率低、评分一致性差等问题,提出构建慕课平台 编程作业自动评分系统的思路,以 Python 程序设计导论课程为例,从评分规则设置、自动批改、反馈 收集和成绩评定 4 个方面介绍该自动化评分系统的教学实践应用,最后说明该系统的教学实践效果。
关键词:Python;MOOC 平台;编程作业;自动判分;动态规则引擎
0
引 言
近年来,Python 程序设计导论课程因其广泛 的应用和教学需求,成为高校计算机教育的核心课程之一 [1]。随着慕课平台的兴起,编程课程的大规模教学已在全校范围内展开 [2]。然而,海量作业对教师批改的效率和评分准确性提出了严峻挑战。传统的人工批改方式存在耗时长、主观性强和评分一致性差等问题,尤其在复杂逻辑题和 GUI 编程题的评分中,难度尤为突出。为应对这些挑战,我们设计并实现了一套基于 Python 的自动评分系统,该系统利用动态规则引擎和多线程爬虫技术,自动抓取编程作业、进行批量评分并反馈结果。研究的目标包括提升批改效率、确保评分一致性、支持多样化题型(如输出匹配检测、函数用例检测和逻辑覆盖检测)的灵活评估,通过自动判分的方法,有效提升学生的学习效果。
1
现状分析
以所在学校的 Python 程序设计导论课程为例,该课程每年在大二的上下两个学期开设,由计算机学院的 36 名老师面向 45 个专业的 108 个 班级共 4 384 名学生授课。课程采用线上线下混合式教学形式,每班每周安排 2~4 学时的实践课,总计 34 学时。由于每个班级的学生人数较多,通常超过 45 人,如何确保每位学生都能达到课程目标,成为待解决的问题。虽然尝试了多种教学方法,但是效果并不理想。分析其原因,每周作业的批改工作量巨大。课程成绩结构主要由单元检测、每周项目、课后作业和期末考试构成。在上课过程中,教师难以在课堂上及时检查并反馈所有学生的作业。学生须将作业以附件形式上传至新农慕课平台,教师再逐一下载并批阅评分。其中,每周项目为编程作业,教师需要在新农慕课平台输入学生学号,复制学生提交的代码到编辑器,运行并测试代码,检查是否按要求完成作业。在这个批改过程中,完成一份编程作业的判分需要约 2 分钟。按平均 2 个班级每班 50 人计算,批改一次编程作业需要约 3.3 小时,而这仅仅是每周项目批改的一部分。此外,教师还要统计错题集,以便在下次课堂上讲解错题,提升学生的编程能力,这进一步增加了工作量。
这种作业检查方式导致学生无法及时获得反馈,同时也占用了教师大量时间,影响学习效果 [3]。因此,开发一套能够自动对编程题进行判分的系统显得尤为重要,它不仅能提升编程作业的批改效率,确保评分一致性,还能减轻教师的负担。
2
构建慕课平台编程作业自动判分系统的思路
随着大规模在线开放课程(MOOC)的普及,编程类课程的作业批改效率和准确性成为制约教学效果的关键问题 [4]。传统的人工评阅模式难以应对海量作业的实时反馈需求,且易受主观因素影响,因此,构建一种智能化、多维度、高并发的自动评分系统成为提升教学质量的必然选择。为了实现这一目标,课程设计了一种以“技术赋能教育”为核心理念的系统,通过模块化功能设计与多线程技术融合,实现从代码获取、动态评估到报告生成的全流程自动化闭环,系统架构如图 1 所示。系统集成新农慕课平台交互、多线程代码评估与动态评分规则的自动化教学评测系统工作流程,涵盖教学任务布置、学生代码获取、 多维度自动化评测及成绩反馈核心环节。

系统的核心功能包括学生代码的批量获取、自动化评估、成绩生成与反馈等。系统的主要模块和技术实现包括平台交互、学生代码的获取、多线程处理、代码评估流程、成绩反馈闭环等关键技术,具体流程如下。
1)新农慕课平台交互。
教师可通过系统中的模块登录 MOOC 平台,通过爬虫技术动态解析课程章节结构,系统能够获取课程内容,并进一步生成学生代码提交页面的链接 [5]。同时,系统加载相应章节的评分规则,用于后续评估学生代码的准确性和质量。
2)学生代码获取与多线程分发。
在学生代码获取过程中,系统使用模块结合多线程技术并发调用获取学生代码的方法,从新农慕课平台批量获取学生提交的代码,大大提高了代码获取效率。
3)代码自动化评估核心流程 [6]。
(1)可运行性测试:在代码评估过程中,系统首先执行可运行性测试。系统运行学生提交的代码,并捕获可能出现的运行时错误,如语法错误等。
(2)函数调用测试:系统动态导入学生提交的代码并进行函数调用验证。通过检查学生提交的代码中是否包含指定函数,并验证函数的输入输出是否符合预期结果。
(3)逻辑覆盖测试:系统采用正则表达式分析学生代码中的特定模式,如检查 GUI 代码中的按钮组件定义次数,并动态验证代码中的条件逻辑是否满足特定数量条件。
(4)模糊输出匹配:为了提高代码输出的容错性,系统通过计算学生代码输出与预期输出是否匹配,该机制支持多个预期输出模板匹配,提高了评估的灵活性和准确性。
4)成绩生成与反馈闭环。
在评估完成后,系统生成结构化评测报告。报告中包含总成绩、错误详情、各个测试用例的得分明细以及学生提交的原始代码。评测结果供教师查看和分析,便于教师进行全面的统计和评估。
3
教学应用实践
Python 程序设计导论课程中使用了自动评分系统。实验班与平行班基于自然班级划分,实验班包含 2 个班级共 87 名学生,平行班为同专业 2 个班级共 94 名学生进行手工判分,共计 181 名学生作为实验对象。每周项目作业包含 8 类游戏设计编程题:杠子老虎鸡虫、猫咪藏在哪个房间、神奇时钟、桌上冰球、世界杯八强连连看、华容道、决战三字经和守卫家园。这些作业涵盖了不同的知识点,需要在教学中设置不同的评分规则进行自动判分并反馈。因此,系统在教学中的应用主要包括评分规则设置、自动批改、反馈收集和成绩评定 4 个环节。
(1)评分规则设置。教师通过新农慕课平台发布编程作业并设置评分要求,具体评分规则见表 1。通过系统灵活配置评分标准,根据不同题型调整评分规则。其中,可运行性主要检测学生提交的代码作业能否正常运行;输出匹配主要检测项目作业要求使用 print 语句在终端输出相应的内容;函数调用主要检测函数返回结果与预期输出是否匹配;逻辑覆盖主要检测 GUI 的组件代码,以及学生是否按要求添加按钮、输入框等组件或其他主要代码。
(2)自动批改。系统利用多线程爬虫抓取学生代码,并通过动态规则引擎进行评分。系统判分与人工判分在不同教学周次中的时间消耗情况如图 2 所示,数据涵盖 8 周的教学周期。人工判分由 1 名教师对每周 1 份作业判分所耗时分布在 74.1~109.1 秒,平均耗时约为 93.1 秒。如果批改相同的 8 周 87 人份作业,总耗时约 18.01 小时。 随着任务量的增加,人工判分的时间消耗会显著上升。系统判分完成每周 2 个班级 87 人作业的 判分所耗时间分布在 41.3~66.9 秒,每周作业平均耗时约为 48 秒,8 周 87 人份作业总耗时约 6.4 分钟,表现出较高的效率和稳定性。相比之下,系统判分比人工判分快 168 倍,这一对比凸显了系统判分在处理大规模作业时的效率优势,尤其是在任务量较大或复杂度较高的情况下,系统判分能够显著减少时间成本,减少主观性误差,为教师减轻负担。


(3)反馈收集与教学支持。系统通过自动化评测生成结构化评分报告,采用代码可运行性、函数调用、逻辑覆盖性、输出匹配 4 种评分体系对代码质量进行多维度分析。报告通过邮件自动反馈给学生,评分报告明细见表 2。报告包括各项得分详情、评测条件、实际结果与期望结果的对比,并提供针对每项任务的具体得分。每个维度都会列出评分条件、实际测试结果与期望结果的详细对比,确保学生能够明确理解每个评分项的评判标准。报告还提供针对每项任务的具体得分,帮助学生识别代码中的问题并进行改进。

(4)成绩评定:本课程为过程性考核方式评定成绩,成绩结构为总评成绩 = 单元检测 + 每周项目 + 课后作业 + 期末考试,共 4 个部分构成,其中期末成绩占 40%,其他 3 个成绩各占 20%。其中,单元测验为客观题,由新农慕课平台自动评分;实验班的每周项目由系统批改;期末考试分客观题和主观题。主观题部分也由本系统判分,判分方式与每周项目一样由设置好的评分规则进行判分。通过系统判分与反馈,实验班与平行班相比,每周项目的合格率和总评成绩有显著提高,有效促进了学生面向对象程序设计能力的提升。为了进一步分析两组班级之间的成绩差异,还进行了 Mann-Whitney U 检验。具体结果见表 3,展示了实验班和对应平行班的项目平均成绩、项目不及格率、总评最高分、总评最低分、总评平均成绩、总评不及格人数,以及基于 Mann-Whitney U 检验的项目平均成绩和总评成 绩的显著性差异。

4
教学实践效果
通过设计并实施基于 Python 的慕课平台编程作业自动评分系统,成功验证了其在提升批改效率和确保评分一致性方面的显著效果。
(1)批改效率提升。实验结果显示,使用自动评分系统后,批改效率比传统人工评分提高了 168 倍。在处理大量作业时,系统批改所需的时间大大低于人工判分,具体表现在 8 周 87 名学生的作业评分,系统总耗时为 6.3 分钟,而人工评分平均总耗时 18 小时。系统的高效性尤其在任务量大、题目复杂时表现突出,显著减轻了教 师的工作负担。
(2)评分一致性。通过多线程爬虫技术和动态规则引擎,系统对学生代码的功能、逻辑、输出等维度进行了综合评估。由于评分标准的明确性和规则的统一性,系统能够有效确保评分的一致性,避免了人工评分可能带来的主观误差,保证了每位学生的得分基于同一标准。
(3)教学效果的提高。实验班与平行班相比,使用自动评分系统的实验班在编程能力提升方面表现出了更显著的优势。实验班的学生在每周项目作业的成绩和合格率上有所提高,总评成绩较平行班也有所提高,且实验班的不及格率明显低于平行班。这表明自动化的作业批改系统不仅提高了教学效率,还有效促进了学生编程能力的提升。
(4)反馈机制的优化。系统提供了详细的反馈报告,帮助学生识别代码中的问题,并及时改进。这种即时反馈机制帮助学生更快地理解并纠正错误,从而提升学习效果。每次作业批改后,学生都能收到结构化的评分报告,具体列出各个评分项的得分和评判标准,有助于学生在下一次作业中避免重复性错误。
5
结 语
基于 Python 的慕课平台编程作业自动评分系统通过动态规则引擎实现多维度评估,有效提升了批改效率和准确性,并促进了学生编程能力的提升。研究结果表明,自动化判分系统能够有效减轻教师的工作负担,确保评分的一致性,并为学生提供及时的反馈,进而优化了教学过程,尤其在大规模在线教学环境下,系统的高效性和一致性成为课程质量保障的重要因素。多线程爬虫技术和动态规则引擎在编程作业评估中的应用价值,为其他编程课程的自动化评估提供了有益参考。未来,随着技术的进一步发展,自动评分系统可以在题型和规则的多样性、评估精度和智能化程度等方面进一步优化,推动慕课平台教学模式的创新和升级。
参考文献:
[1] 张楠. Python语言及其应用领域研究[J]. 科技创新导报, 2019(24): 153-154.
[2] 罗荣良, 吴明晖. 基于“MOOC+实验辅助平台”的面向对象程序设计教学实践[J]. 计算机教育, 2020(2): 170-174.
[3] Gordillo A . Effect of an instructor-centered tool for automatic assessment of programming assignments on students’ perceptions and performance[J]. Sustainability, 2019, 11(20): 5568-5568.
[4] 魏冬梅, 王秀华, 王影, 等. 基于Python的程序设计通识课程建设与教学实践[J]. 计算机教育, 2019(2): 69-73.
[5] 程俊英. 基于Python语言的数据分析处理研究[J]. 电子技术与软件工程, 2022(3): 67-70.
[6] 孙令成. 代码效率的自动评分和相似度检测的研究[D]. 镇江: 江苏大学, 2022.

101计划|操作系统课程实践新路径探索——全国大学生计算机系统能力大赛操作系统设计赛“区域赛”
101计划|依托实践教学云平台的计算机系统与处理器芯片拔尖人才培养
101计划|基于计算机网络教材建设的深度融合混合式教学设计与实践
影响力:
荣获“中国最具国际影响力期刊”“中国国际影响力优秀学术期刊”“2025 BIBF精品期刊展”推荐期刊等称号
权威认证:
CCF《计算领域高质量科技期刊分级目录》T2类期刊
中国知网《学术精要数据库》高影响力论文期刊
中国知网(CNKI)、万方数据、GJFD、CAJCED、CPCD等数据库全文收录
JST 日本科学技术振兴机构数据库
图灵特刊被英国剑桥大学李约瑟研究中心东亚科学史图书馆收藏

