在线评测教学辅助系统设计与应用

2018-01-06 12:24肖红玉蓝荣祺万志强
电子设计工程 2017年23期
关键词:评测程序设计题目

肖红玉,蓝荣祺,万志强

(北京师范大学珠海分校信息技术学院,广东珠海519087)

在线评测教学辅助系统设计与应用

肖红玉,蓝荣祺,万志强

(北京师范大学珠海分校信息技术学院,广东珠海519087)

针对程序设计类课程实验教学的需求和特点,在分析现有的在线评测系统特点的基础上,设计开发了程序设计在线评测教学辅助系统,并成功应用在C/C++/Java/数据结构课程的实验教学中。文中介绍了系统的总体设计目标、技术架构、功能设计、数据库设计以及应用情况。结果表明:系统实现了实验课程教学资源、作业、题库、用户管理的功能,最重要的是实现了程序练习和评判过程的自动化和标准化,应用情况良好,获得师生好评,对教学质量有很大的促进作用。

在线评测;教学资源;实验教学;教学辅助系统

C/C++/Java/数据结构等程序设计课程是高校理工类专业的基础核心课程,课程培养目标:培养学生掌握程序设计的思想和方法,掌握基本的程序设计过程和技巧,初步具备分析问题和利用计算机求解问题的能力[1]。这类课程对实践开发能力、逻辑性思维要求比较高[2]。提高学生实践开发能力最有效的方法就是重视实验教学,督促学生在课堂内外编写大量代码。目前,部分院校的程序设计课程的实践教学环节仍停留在学生提交代码,课后由教师或助教手工评判的传统教学模式上。这种教学模式不仅浪费资源、耗时耗力,并且由于作业完成情况反馈时间过长,学生的大脑接受的刺激频率过低,从而导致对教学内容的记忆度大为减弱,久而久之开始厌倦枯燥的编程作业,学习效果欠佳[3]。ACM国际大学生程序设计竞赛(ACM/ICPC)[4]是目前全球公认水平最高、影响最大的编程赛事,许多高校开发了基于ACM/ICPC的程序设计在线评测系统[5-9],提供程序设计竞赛与训练的开放式环境,但这些系统主要为ACM比赛服务,不适合直接用于课程实验教学[10-13],有些高校以此为蓝本设计了在线评测教学辅助系统[14]。

文中对现有的在线判题系统进行了分析,综合各系统的优点与特点,结合我校程序设计类课程实际教学需要,设计了一个面向实验教学兼顾竞赛的在线评测教学辅助系统,系统可对用户提交的C/C++/Java源程序进行编译、运行、评测,特别地还提供了教学中心和作业管理子系统。程序设计教学团队在该系统开展了多课程(C/C++/Java程序设计/数据结构)多轮实验教学实践,实践效果良好。

1 系统设计

1.1 系统总体设计目标

基于Linux/Windows、Python、Mysql、Django 1.8和Nginx1.8平台和HTML5+jQuery 1.11+Bootstrap 3.5前端开发技术的在线评测教学辅助系统是以ACM/ICPC竞赛模式为蓝本而设计的程序源代码在线评判、实验教学、竞赛、教学资源管理的平台。系统可以对用户提交的C/C++/Java源代码进行编译、运行、实时评测打分并给出明确的评判结果。系统为老师提供了课程管理、排课管理、题库管理、作业管理、助教管理、教学资源管理等功能,是日常教学、考试、竞赛的一体化平台。学生借助该平台可以完成日常课程作业、查看用户排名、站内检索、下载教学资源等。

1.2 系统总体架构

系统采用多层分层架构,分为:表现层、业务逻辑层、评测模块、数据访问层,层间关系如图1所示。

图1 系统体系结构图

表现层:接收用户提交的数据,并以图表的形式向用户展示请求的数据,主要用于实现与用户的交互。

业务逻辑层:包含应用于业务对象的规则,系统的业务规则在这部分编写,主要完成以下功能:完成系统业务规则和逻辑的实现,从表现层接受用户请求,根据业务规则处理请求,通过数据访问层完成与数据库的交互任务,将处理结果返回给表现层。

数据访问层:主要完成与数据库的交互即CRUD(Create、Retrieve、Update、Delete)操作。数据访问层为业务逻辑层提供服务,根据业务逻辑层的要求从数据库中提取数据或者修改数据。

评测模块:对学生提交的程序代码进行编译、运行。如果源代码在编译过程出现错误,直接返回CE(Compile Error),结束判题。编译成功,则读取预定的输入数据并运行程序,获取程序运行时间、内存和CPU使用情况,如果发现这些数据超出题目的设定值,则结束判题,并给出对应的提示。如果程序顺利执行,则把输出重定向到临时的输出文件中,并和预先给定的标准输出对比,两个文件的内容一模一样则判定学生提交的代码是正确的,并返回Accept;否则返回WA(WrongAnswer),评测过程如图2所示。

图2 代码评测流程图

1.3 功能设计

系统共有管理员、老师、学生、助教4种角色,不同角色拥有不同的操作权限。所有用户都有个人中心,包括:个人主页(访问题目、解决题目的次数汇总及明细与链接,提交次数汇总,通过次数汇总)、上传头像、账户设置(密码、昵称、邮箱、个人简介、常用编程语言)、微信绑定。

管理员:可以设置系统运行参数(判题机状态、网站名称等)、用户管理(增加用户、删除用户、查找用户、修改用户、批量导入用户密码重置等),管理员还拥有老师和学生的所有操作权限。

教师:

1)题库子系统:发布、修改、删除题目,发布题目时需要输入题目标题、题目描述、输入描述、输出描述、样例输出、样例输出、时间限制、内存限制、输入测试数据、标准输出数据、题目提示和参考程序,其中时间限制、内存限制可以采用默认值。题目可以分类管理,也可以按照难易程度分级。可以设置是否隐藏题目,被隐藏的题目只对老师可见。本人发布的题目只有自己可以修改、删除,其他老师只能查看、布置作业时选用。每道题都可以查看评测历史。

2)教学中心:教学中心包括课程管理(创建、编辑、删除课程)、课程通知(发布、修改、删除课程通知)、教学资料管理(上传、删除教学资料)、排课管理(设定上课的起止教学周、上课的具体时间、生成选课码)、学生管理(批量导入上课学生名单、添加单个或多个学生、批量设定学生上课时间)、学生调课管理、助教管理(添加、修改、删除助教)。

3)作业子系统:发布作业、修改作业、批改作业、删除作业。发布作业时首先输入作业基本信息(作业名称、最高成绩、备注、设置评测语言),接下来从题库中选择题目添加到作业中,设置每道题的分值以及是否必做,设置作业的访问权限,人工批改作业(可批量修改),作业统计分析,作业代码打包下载。

4)比赛:比赛功能与发布作业类似,不同的是作业通常用来指定给老师授课的学生在规定时间必须完成的题目,而比赛面向的是全年级或者全校的所有学生,此外,跟作业子系统相比多了添加裁判用户和在线问答功能。

学生:

1)题库子系统:可查看题库中已公开的所有题目,在线提交代码查看评测结果,查看题目评测历史。

2)教学中心:查看教师发布的课程公告,下载课程学习资料,选课,提交调课申请。

3)作业子系统:查看老师发布的作业,并在线完成作业和填写实验报告。查看作业完成情况排行榜。作业截止后,查看各题示例代码。

4)比赛:查看比赛,参加比赛,查看比赛结果。

1.4 数据库设计

系统运行过程中产生的所有数据(用户、题目、作业、课程、评测结果等)都需要持久化保存到数据库中,采用MySQL数据库。根据系统功能需要,共设计了38张表,其中用户表用来保存用户信息;与题库相关的表有8个,分别是题目分类表、题目信息表、题目测试数据包、题目与测试数据关联表、题目访问记录表、测试数据自动生成器队列、评测队列、评测状态表;与作业相关的表有11个:作业信息表、作业题目与设置、作业题目集关联表、作业权限控制设置、作业访问权限关联、作业解题情况、作业解题情况与评测状态关联表、作业与评测状态关联表、调课请求表、实验报告表、作业访问黑名单;教学中心子系统共有10个:课程信息表、课程通知消息表、学院信息表、专业信息表、课程排课信息、排课选课情况、课程排课关联表、教学资源库、课程与教学资料关联表、课程助教关联表;比赛子系统共有7个:比赛信息表、比赛题目设置、比赛题目设置关联表、比赛评测状态关联表、比赛题目解题情况、比赛题目解题情况与评测状态关联表、比赛选手问答表;还有1张表用来存储全站设置信息。

2 在“C程序设计”实验教学中的应用

2.1 实验教学题库建设

借助在线评测教学辅助系统开展实验教学首先需要建设课程题库,与ACM比赛主要强调算法不同,该系统主要用于日常教学,用户主要是本科低年级的学生,题目选取非常重要,既要贴近教材,难度适中,符合教学大纲需要,凸出课程的重点难点,还要生动有趣。为此程序设计教学团队根据教材、教学大纲、本校学生特点设计了一系列由简单到综合、循序渐进的实验题目。平台于2015-2016第一学期在2015软件工程专业试运行,到目前为止适合“C程序设计”日常教学的题目有几百道,题目还将陆续更新补充。部分题目截图如图3所示。

2.2 分层次个性化教学

根据一项生物心理学研究显示,人脑类似一个反馈激励系统,在有效的信号刺激下,刺激的频率越快,信息驻留在大脑中的时间就越长,有效及时的信息反馈能够激发人脑的学习潜能和兴趣[3]。为了激发学生的编程热情,系统设计了作业排行榜和全站排行榜,排行榜采用类似ACM比赛的排名算法,首先是正确解题的数量,如果多名同学解题数量相同,再根据总用时进行排名,总用时由每道解答正确的试题的用时加上惩罚时间而成。每道试题用时从作业开始到题目解答被判定为正确为止,期间每一次错误的运行将被加罚20分钟,未正确解答的试题不记时。每次作业都会生成排行榜,供师生查看,一方面便于学生了解所有人包括自己的作业完成情况,形成你追我赶的良好学习氛围。另一方面教师可以对学生的学习情况了如指掌,并可根据学生的学习层次制定不同的学习方案,鼓励学有余力的学生加入ACM协会,去挑战课程外的难点。对于作业完成有困难的学生,老师可以深入了解具体情况,指定成绩好的学生对其实行一对一的帮扶。图4为某次作业的排行榜截图。

图3 “C程序设计”部分题目截图

图4 某次作业排行榜截图

2.3 激励竞赛,引导课外自主训练

“C程序设计”课程的受众面广,以我院为例,是软件工程、计算机科学与技术、数字媒体技术、电子信息科学与技术、电气工程及其自动化5个系500多名大一新生的专业基础课,学生的学习能力和基本素质参差不齐,所以课外自主学习习惯和能力的培养非常重要,只有引导学生根据自身的实际情况在课外大量编写代码,才能有效提升创新和实践能力[15]。程序设计教学团队为了有效吸引学生课外自主训练,摸索出了多项激发学生编程兴趣、营造学习氛围的有效方法,其中一个方法就是鼓励学有余力和爱好编程的学生参加学科比赛,教学团队与学院ACM协会联动,定期举办各种比赛,比如“ACM国庆欢乐赛”、“ACM跨年友谊赛”、“ACM光棍节男生赛”、“ACM校内新生赛”等等。老师根据比赛排名,对同学给予加分奖励。经过一系列课外自主训练,有了一定的基础和技术积累后,可以继续参加学院举办的“ACM自主发展课堂”,优秀的学生将会被选拔进入ACM校队,经过专门的集训后,参加ACM省赛、区域赛、全球总决赛。从而达到依托平台形成从课内实验教学到自主训练,再到学科竞赛的创新型人才培养良性循环。

3 结论

在线评测教学辅助系统对学生提交的程序源代码实时评测,可以给学生提供365天7*24小时不间断助教服务,具有人工评判所无法比拟的优点,系统有别于传统意义上面向比赛的OJ(OnlineJudge,在线评测)系统,拥有更适合课程教学的教学中心和作业管理子系统,为程序设计类课程如C/C++/Java/数据结构等提供了实验教学平台,对这些课程的实验教学起到了很好的辅助作用,可以有效地提升教学质量。

[1]何钦铭,颜晖,苏小红,等.“程序设计基础”课程教学实施方案[J].中国大学教学,2010(5):62-65.

[2]葛文庚,蔺莉.程序设计基础课程教学模式研究与设计[J].电子设计工程,2012(20):44-46.

[3]茅海军,叶海荣.在线评测在C程序设计实验教学中的研究与评价[J].中国校外教育,2012(12):162-163.

[4]The ACM-ICPC国际大学生程序设计竞赛主页[EB/OL].[2016-09-09].https://icpc.baylor.edu/.

[5]浙江大学在线评测系统[EB/OL].[2016-09-09].http://acm.zju.edu.cn/onlinejudge/.

[6]谢迪,李文新,郭炜.“百练”:一个程序设计技能训练与水平测试平台[J].合肥工业大学学报:社会科学版,2008,22(4):172-175.

[7]华中科技大学在线评测系统[EB/OL].[2016-09-09].http://acm.hust.edu.cn/.

[8]同济大学在线评测系统[EB/OL].[2016-09-09].http://acm.tongji.edu.cn/.

[9]杭州电子科技大学在线评测系统[EB/OL].[2016-09-09].http://acm.hdu.edu.cn.

[10]陈念年,李郁峰,李绘卓.基于在线评判系统的程序设计教学[J].计算机教育,2009(15):83-85.

[11]徐红云,江捷斯,周钒.基于竞教结合的“高级语言程序设计”实验教学改革实践[J].实验技术与管理,2012,29(10):165-168.

[12]陈志,李梦泽,马嫣,等.基于ACM程序设计竞赛的常规教学改革[J].电气电子教学学报,2011,33(6):18-20.

[13]苗桂君,刘勇,许南山,等.在线评测系统在程序设计类教学中的应用研究[J].计算机教育,2016(9):157-162.

[14]韩君泽,钟美,刘东升.程序设计在线评测辅助教学系统的设计与实现[J].内蒙古师范大学学报:自然科学汉文版,2010,39(5):473-476.

[15]韩建平,刘春英,胡维华.“课内外贯穿,竞赛教学融合”的程序设计教学模式[J].实验室研究与探索,2014,33(6):169,176.

Design and application of online judge teaching assistant system

XIAO Hong-yu,LAN Rong-qi,WAN Zhi-qiang
(College of Information Technology,Zhuhai Campus,Beijing Normal Univerity,Zhuhai519087,China)

According to the needs and characteristics of experimental teaching of programming design and based on the analysis of the characteristics of the existed online judge system,design and development the online judge teaching support system of programming design courses,it was Successfully applied in the experimental teaching of C/C++/Java/data structure course.This paper describes the overall design goals of the system,technicalarchitecture,feature design,Database Design and the practices application.The results show that the system has realized the function of teaching resource management,programming assignments management,test bank management and users management,the most important thing is to realize the procedure exercise and the judgment process automation and standardization.The system is in good condition,Teachers and students are most appreciative of the system,it has a great role in promoting the quality of teaching.

online judge;teaching resources;experiment teaching;teaching assistant system

TN99

A

1674-6236(2017)23-0011-05

2016-10-09稿件编号:201610022

广东省教育研究院教育研究课题(GDJY-2015-C-b048)

肖红玉(1976—),女,江西信丰人,博士,副教授。研究方向:分布式水文系统、软件工程、数据库应用。

猜你喜欢
评测程序设计题目
次时代主机微软XSX全方位评测(下)
次时代主机微软XSX全方位评测(上)
唐朝“高考”的诗歌题目
基于Visual Studio Code的C语言程序设计实践教学探索
关于题目的要求
本期练习类题目参考答案及提示
从细节入手,谈PLC程序设计技巧
攻坡新利器,TOKEN VENTOUS评测
Canyon Ultimate CF SLX 8.0 DI2评测
高职高专院校C语言程序设计教学改革探索