通知公告:

发言范文网欢迎您
栏目导航
【工作总结】
【工作计划】
【述职报告】
【作文大全】
【心得体会】
【思想汇报】
发言范文网

面向在线判题系统的程序设计教学方法的研究与实践

发布时间:2022-03-28 10:40:01   浏览量:

林子慧

摘 要:为了改变传统的程序设计教学过程中训练效果不易跟踪,人工判题需要大量人工操作,学生学习积极性不易提高的状况,文章研究并实践了一种应用在线判题系统的程序设计教学方法。通过应用在线判题系统中的题目分类标签、判题结果、小组和比赛以及学生解题情况汇总等功能,可以激发了学生学习的能动性,并为教师提供更直观的教学效果可视化工具,从而有效地提高教学质量。

关键词:在线判题系统;程序设计教学;教学研究

1    在线判题系统与程序设计教学

1.1  在线判题系统简介

在线判题系统(Online Judge System)是一个基于Web的交互式程序设计训练系统。在线判题系统的大量使用始于ACM程序竞赛,为了备赛,国内外许多大学都分别自行开发了类似的在线判题系统,用于日常的训练和内部比赛。在线判题系统的后台管理一个或多个题库,提供训练题目,每个题目有多个测试样例,以验证用户提交的代码的正确性。测试样例一般包含多组输入数据和正确输出数据,学生提交解决问题的程序后,系统通过验证在相同输入数据时,程序是否可以分别正确地输出结果,来判断程序的正确性。本文作者使用开源的江南在线判题系统(Jiangnan Online Judge),通过二次开发不断完善后,为在校学生提供了自建题库的在线判题系统“JP程序设计网站(JPOJ)”,目前系统已正常运行超过两百天,注册用户超过七百人,接收并验证学生提交的代码超过11万次,取得了初步的教学效果[1]。

1.2  在线判题系统的验题方式

在线判题系统通常在后台运行一个判题模块,使用特制的受限沙盒环境,自动编译和测试用户提交的解决代码。根据测试原理,判题模块采用多组测试样例,穷举可能存在的逻辑漏洞。根据用户提交的程序的执行结果,在线判题系统返回相应的验证结果。

1.3  传统程序设计教学方法中的存在的问题

为了考查学生程序设计的掌握程度,通常课堂的代码演示之后需要布置堂上编程练习和课后编程作业。在传统的程序设计教学中,学生在线下编辑程序、编译执行、测试程序和记录结果都需要大量人工操作,效率难以提高;教师人工判題也难免遗漏一些程序逻辑错误。另外,传统的程序设计课程教学依赖课本和教学大纲,按提前准备PPT的教学,难以摆脱堂上案例不够丰富,程序示例演示不便的问题,在学生学习状况超过或低于预期时,不容易及时动态调整教学进度[2]。

2    在线判题系统与程序设计课程教学的融合设计

2.1  根据程序设计教学目标,合理安排编程训练

程序设计教学一般采用循序渐进的方式,从程序接收输入和产生输出开始,接着介绍各类数据类型的特点和运算表达式,然后介绍3大基本的流程控制、容器数据类型和基础算法等,其中的知识模块和知识点众多,为其整理例题和练习题是教学中必需的环节。

使用在线判题系统,整理相似题目,合理安排题目的标签,可以在教学中根据学生的掌握情况,合理安排练习和作业。这些标签,比如“分支”“循环”“一维数组”等,都直接关联课程教学大纲中的理论知识和实践技能。通过访问标签,教师可以更方便地在课堂教学中指导与堂上讲授知识相关的题目;能帮助学生理解课程大纲,并引导学生根据标签提供的题目分类,自主深入学习有关知识[3]。

对于每个知识点的分类标签,在线判题系统提供多个由浅入深的题目。比如对于整数的数据类型和计算,本文中的系统整理了21个相关的题目,包括仅为入门难度的“A+B”“A×B”,以及一定挑战的“整数的各个数字”“打包苹果”等题目。其他分类标签中的题目也是根据学习曲线,优化选择了《C程序设计》及其他教材中的课后习题,这样有利于学生从基础开始,举一反三,加强对程序设计的感性认识。

在线判题系统可以自动判断学生提交的代码是否可以正确解答问题。根据系统提供的判题结果,可以及时掌握学生编程时遇到的具体问题,提供及时的辅导。如图1(a)中的编译错误,系统提供了编译器的日志,能直接定位到出错的代码段;图1(b)中出现了运行超时的错误,通过分析可以判断循环结构没有正确结束,进入了死循环;图1(c)中由于计算逻辑错误,产生了错误的计算结果;图1(d)的正确运行结果返回了各测试样例的运行时长和内存使用情况,为优化程序逻辑,提高程序执行效率提供了参考。

在线判题系统中的“小组”功能将教学班的学习组织起来,通过系统布置作业,查看教学班的学习进展。小组中的“榜单”功能记录了每位学生历次提交的代码及其运行结果,并以完成作业的总用时作为依据进行排序。在程序设计教学中,可以灵活使用小组功能,在堂上布置练习和在课后布置作业,随时跟踪学生的完成情况。在实践中,教师通过榜单功能可以更好地激励学生及时完成作业,学生亦可由此发现班里学习进展较快的同学,促进了线下的学习交流。

使用在线判题系统中的比赛功能,教师可以通过组织线上编程比赛,借此达到训练学生的目的。在线判题系统的比赛可分为个人排位赛、OI赛、线下比赛等多种形式,依据历次个人排位赛的比赛结果,生成“段位排行”(见图2),激励学生勇于争先,达到以赛促练的效果。

2.2 依据在线判题系统中的数据,优化程序设计课程教学

通过在线判题系统,生成学生在时间上完成题目的数量,可以跟踪学生完成题目的进展情况,如图3所示。对于进展较快的学生,鼓励他(她)继续完成难度更高,更有挑战性的题目;对于进展不理想的学生,在堂上堂下给予更多的关注,督促学生跟上学习进度。

分析判题结果的汇总情况,可以掌握学生的学习状态,如图4所示。较高的通过率和较少的编译错误和解答错误通常是编程水平较强的表现,但也有可能是抄袭的结果。通过上线判题系统,汇总每位学生的判题结果,可以在一定程序上反映学生的学习状态。

2.3 完善在线判题系统的思路

引入查重功能,杜绝代码抄袭。在教学中发现学习提交的代码偶尔还存在抄袭的情况。未来将研究如何实现自动查重和人工查重的功能,使用低阈值的方式对代码进行初步处理和分析,去除注释、预处理、标准库等通用的代码段,并对自动查重时触发限值的代码进行人工复核,减少自动查重的误判。

另外为了适应新的教学需要,还可以在系统中继续增加Go,Scala,Kotlin和Perl等编程语言,适应更多的编程课程。

3    结语

为了提高程序设计课程的教学质量,更好地跟踪学生在程序设计课程的学习状态和进展,本文介绍了一种结合在线判题系统的程序设计教学方法。通过分析在线判题系统在程序设计教学中的实际应用,本文发现题目分类标签、判题结果、小组和比賽以及学生解题情况的汇总数据,可以为教师和学生提供便利的教学工具,激发学习的积极性,其直观的教学效果可视化工具也为教师及时调整课程教学进度,提高教学质量提供了有效的保障。

[参考文献]

[1]韩志科,王贵,韩俊杰.基于API自动测试的程序设计在线判题系统的研究与实现[J].计算机系统应用,2008(7):9-13.

[2]武建华.基于ACM模式的数据结构实践教学改革与探索[J].计算机教育,2007(24):114-116.

[3]蔡崇超.基于Web的在线判题系统设计与实现[J].软件导刊,2016(3):107-109.

(编辑 何 琳)

Research and practice of program design teaching method for online problem determination system

Lin Zihui

(Jiangmen Vocational and Technical College, Jiangmen 529020, China)

Abstract:In order to change the traditional programming teaching process, the training effect is not easy to track, manual problem determination needs a lot of manual operation, students" learning enthusiasm is not easy to improve, This paper studies and practices a programming teaching method using online problem determination system. By applying the functions of problem classification label, result, group and competition, and summary of students" problem solving in online problem determination system, the students" initiative in learning can be stimulated, and more intuitive visual tools for teaching effect can be provided for teachers, so as to effectively improve the teaching quality.

Key Words:online problem determination system; programming teaching; teaching research

猜你喜欢教学研究发展生物学核心素养的建模教学研究福建基础教育研究(2019年5期)2019-05-28基于项目式学习的生物学概念教学研究福建基础教育研究(2019年7期)2019-05-28《新作文·中学作文教学研究》2017全年目录一览新作文·中学作文教学研究(2018年1期)2018-04-21高中数学复习课教学研究中学教学参考·理科版(2017年8期)2018-02-24小学数学问题解决中图示表征策略的教学研究新课程·上旬(2017年9期)2017-11-21高中数学教学研究中学课程辅导·教学研究(2017年23期)2017-11-19基于“重点·难点·关键点”的一元二次不等式教学研究中学课程辅导·教学研究(2017年18期)2017-09-13Research on English Games in the Kindergarten Teaching校园英语·中旬(2017年6期)2017-07-13MATLAB在大学物理课程中的应用实践教学研究求知导刊(2017年6期)2017-04-15儿童观察画教学研究中国校外教育(上旬)(2009年6期)2009-08-04

相关热词搜索: 在线 教学方法 程序设计
Top