基于Online Judge的计算机类课程教学评价方法研究
2019-12-05杜祥军李建波张永进
杜祥军,李建波,李 敏,张永进
(1.青岛大学 计算机科学技术学院,山东 青岛 266071;2. 青岛大学 教务处,山东 青岛 266071)
0 引言
工程教育、新工科建设为当前我国高等教育的改革与发展提供了指引。工程教育注重“成果导向”(Outcome-based Education, OBE),即“以学生为中心、以学生学习产出为导向”的理念[1]。为促进工程教育与新工科建设,教育部发布了《普通高等学校本科专业类教学质量国家标准》,该标准突出“以学生中心”“产出导向”“持续改进”三大原则。
MOOC(Massive Open Online Course,大规模在线开放课程)是一种基于互联网、以开放访问和大规模参与为手段、以学习者为中心、针对动态发展的学习内容、通过在线交流提供全面及时的学习反馈的免费开放网络课程[2]。其中,学习者自身是内在动力,学习效果的评价是其关键问题。在线考试平台是实现学习过程、学习成果管理的有效途径,主要包含两个方面:一是通过云平台、大数据技术对教学过程中学习者的学习行为、学习过程、学习表现等进行详细的记录分析,基于即时产生各种类型的大量数据实现对教学过程的监控和评价;二是建立统一的学科考试题库,实现在线考试。
上述工程教育认证、新工科建设、MOOC分别从宏观理念和实际实施两个不同维度对以学习者为中心、成果导向的考核认证机制与教学过程评价提出了较高要求。教学评价是依据教学目标,按照科学的标准,运用有效的技术手段,对教学过程及结果进行价值判断并为教学决策服务的活动,是对教学活动现实的或潜在的价值作出判断的过程。教学评价一般包括对教学过程中教师、学生、教学内容、教学方法手段、教学环境、教学管理诸因素的评价,但主要由两个核心环节组成:其一是对教师教学工作过程(教学设计、组织、实施等)的评价,其二是对学生学习效果的评价(考试与测验)。在工程教育理念中,目标、需求、过程、评价、改进是5个最关键的问题。然而,传统的考核方式仅从教学阶段和状态出发,通过阶段性考试考查学习者在本阶段的学习成果[3],虽然教学目标和需求可以明确,但却难以实现对学习者学习过程的评价,难以支撑以学习成果驱动整个教学活动和成果评价的教学模式。
Online Judge(OJ)是一种使用计算机程序进行自动判题的技术,通常基于B/S结构实现。浏览器端向用户提供问题描述、程序设计选项与环境、程序评测结果与统计信息等内容,服务器端则对用户提交的程序进行编译、生成可执行文件,并调用测试数据评测程序运行的正确性、消耗时间与内存以及其他结果信息。基于OJ技术研发的系统最初被应用于ACM/ICPC国际大学生程序设计竞赛和OI信息学奥林匹克竞赛,因其能够实现对多种语言编写的程序在线评测,且提供了友好的界面和丰富的统计信息,现广泛应用于学生编程能力的训练、程序设计类课程的在线考核与测验、程序设计类竞赛的评测与排名等[4],形成了一些特色的教学模式[5]。
QDUOJ(Qingdao University Online Judge)是为支撑青岛大学程序设计类课程教学实践与竞赛训练而专门设计的OJ系统,该系统参考了多个著名OJ平台的功能,集成了信息学竞赛的评测方式。
1 基于QDUOJ的教学评价方法
教学评价是推动教学研究的重要方面,是促进教学改革的重要抓手。OJ系统中设计的多项核心指标对于教学内容、教学过程与教学效果的评价具有重要意义。
1.1 以题目为载体的教学内容评价
题目是课程、教学模块、知识点的重要反映。传统教学的组织,包括教师课堂授课与实验教学等多个环节,通常以知识点为单位进行划分。在线开放课程的教学组织则更加强调知识的碎片化,建立在知识碎片化基础上的微课是实现在线开放课程的基础。另一方面,教学过程中知识点的体系化与系统化也是工程教育中知识图谱或课程矩阵构建的基础。分析碎片化知识点间的相互关联,形成体系化的教学模块,进而实现与教材一致的教学内容结构,有利于学习者系统地了解并掌握教学内容的组织和课程进度的安排,并能够从整体上把握所学课程的知识与能力要求。
在QDUOJ中,除传统的题目信息(包括标题、问题描述、输入输出要求与示例、时间空间复杂度限制、来源等)外,还设计了题目可支持的实现语言(Allowed Language)、题目所属的知识点标记(Course/Blocks/Key Points)、题目难度(Dif fi culty)、评测方式(Judge Type)、参考代码(Code Template)等指标。其中,系统通过集成多种语言的编译器,实现了对C、C++、Java、Python 4种程序设计类课程常用语言的支持。通过分层次的标记实现与课程、教学模块、知识点的衔接,教师可以使用该项指标以题目的方式实现对课程教学内容的组织。进而,对不同知识点、教学模块、课程,均可设置3种难度级别。通过题目标记与难度的结合,可以实现对教学内容的有机覆盖。此外,系统还设计了OI和ACM两种评测方式,前者通过逐项测试数据并返回评测结果,为学习者渐进性地练习程序设计、熟悉知识点提供帮助,后者则通过整体性的测试数据,为学习效果的评价提供支撑,而参考代码指标则可以为初学者提供问题解决思路。
进而,依据对上述知识点、难度、语言、数量等指标的分析和调整,可以设计有针对性、以问题求解为驱动、注重实践的计算机类课程教学内容体系。通过增加对应重要知识点的题目数量和难度,可以引导学习者注重学习的重点;通过模块或课程完善知识点的覆盖、衔接与难度设计,可以实现教学内容的体系化与系统化;通过知识点、难度、语言的综合设计,可以实现对知识图谱与课程矩阵的支撑;通过对题目对应知识点、难度、语言、数量等指标的分布统计,可以实现对教学内容的量化评价。
1.2 基于提交与自动评测的学习者教学过程与效果评价
提交是学习者选用特定语言编写并上传针对具体题目代码的过程,该过程涉及用户、题目两个功能模块,可从时间、知识点、难度、数量等多个角度有效反映学习者的学习过程[6]。其中,不同题目提交时间的分布可以评价学习者学习的主动性以及对不同知识点的兴趣度,不同题目提交数量的分布可以评价学习者对于不同知识点的熟练度,提交对应题目的难度分布、时间内存消耗、代码长度等可以评价学习者的编程水平与利用程序设计解决问题的能力。
评测是系统将用户提交的代码进行编译生成可执行文件,并将其置于沙箱中,然后基于测试数据以黑盒测试的方式对其测试并返回测试结果的过程[6]。该过程的实现是OJ系统的关键技术问题。基本的测试结果包括编译错误(CE)、运行错误(RTE)、答案错误(WA)、系统错误(SE)、运行超时(TLE)、运行超内存(MLE)、评测成功(AC)7种,而对这些结果进行统计并结合提交情况还可得到特定题目是否AC、是否1K、错误提交数、罚时等,还有所有题目总AC数、AC率、1K率(1次提交即评测成功)、总提交数、总耗时等。基于对这些评测结果的计算与统计分析,可以得到不同形式的排名,可以实现对学习者的成绩考核,进而可以实现对教学效果的量化评价。此外,在QDUOJ系统中,还设计实现了OI评测,这种评测方式对学习者渐进地学习知识点具有重要作用,并可针对每个知识点给出测试数据的评测成绩,对于量化评价教学效果具有更为直接的作用。
基于上述提交与评测结果,教师既可以实现对每个学习者学习全过程的纵向评价,掌握每个学习者过程中的主动性、兴趣度、重难点与能力水平等,还可以按照课程进度针对知识点模块(教学模块或章节)设置有针对性的练习或考核,通过题目数量、难度、时间等指标的设置,对学习者进行统一的训练或考核,进而,可以横向分析评价所有学习者的学习效果,为教学内容、教学进度的调整提供辅助。
综上所述,基于QDUOJ核心指标设计的上述评价方法具有面向教学过程、以学习者为中心、可量化、评测公正且响应迅速、注重实践与解决问题能力培养等典型特征,对于计算机类课程的教学组织、教学考核等具有良好的支撑作用。
2 评价方法在程序设计类课程教学中的应用
研究与实践表明,Online Judge系统的构建与应用对于程序设计类竞赛与相关课程教学具有重要支撑作用。
一方面,课题组将QDUOJ应用到了蓝桥杯全国软件和信息技术专业人才大赛、ACM程序设计竞赛、中国高校计算机大赛团体程序设计竞赛、中国大学生程序设计竞赛等的日常训练中,并基于该系统组织了多场旨在以赛促教、赛教结合的校级赛事,例如“易途杯”青岛大学编程大赛等。在推进学科竞赛水平逐步提高的同时,课题组持续完善该系统的指标体系,不断升级系统版本,并在开源平台Github上进行了发布。目前,该系统的前期版本已被多所院校采用(如SHU OJ,上海大学Online Judge),对这些院校的程序设计类竞赛与教学起到了良好的支撑作用。
另一方面,以上述QDUOJ系统指标体系的构建为基础,课题组将基于Online Judge的教学评价方法应用到青岛大学计算机类课程的教学中,对于促进课程体系建设、教学改革与研究均起到了良好的促进作用。例如,在高级程序设计语言教学中,课题组针对新生设计了多种评测方式的在线训练与考核,实现了平时作业的自动评测与实验教学的量化评价。在短时间高密度集中开设的计算机创新创业实践的教学中,课题组为选课学生设计了多套训练题目,要求根据每天所讲内容限时完成1套训练题目。每套训练题目既与上一套题目存在部分知识点的重叠,也包含对应当天所讲知识点的题目。训练题目的难度整体上螺旋上升。授课教师每天上午讲解新知识点,下午分析最近结束的训练题目的评测结果,对每位学生的学习情况作出考核评价,进而安排后续课程的讲解进度以及训练题目的知识点与难度分布。最后,在课程结束时,统计分析每位选课学生历次训练的评测排名,给出加权成绩,并以此作为课程最终成绩。实践表明,这种授课方式极大地调动了学生学习的积极性,深受学生的欢迎,选课学生成倍增长。
3 结语
QDUOJ在程序设计类学科竞赛与课程教学两方面的应用实践表明,Online Judge系统能够为程序设计类课程的教学组织与在线考核提供良好的支撑,以QDUOJ为基础构建的指标体系与教学评价方法可广泛适用于众多计算机类课程,形成了以学习者为中心、面向教学过程、评测公正且响应迅速、注重实践与解决问题能力培养、可量化的新型教学评价模式。