计世网

七〇六所航天龙梦推出OJ在线评测系统,助力程序设计类课程改革
2020-11-16
程序设计类课程是计算机类专业的专业基础课,是数据结构、操作系统等计算机核心课程的前导课。

 

  什么是OnlineJudge(OJ)系统

  程序设计类课程是计算机类专业的专业基础课,是数据结构、操作系统等计算机核心课程的前导课。程序设计能力是高校理工科学生,特别是计算机类专业学生所应具备的基本能力,尤其是当今超级计算、大数据和云计算风起云涌的时代,对于高校学生程序设计能力的培养提出了更高层次的要求。

  然而,目前程序设计类课程教学存在的主要问题是传统教学模式存在"重知识、轻技能,重语法、轻思维"的弊端,课程之间无法达到无缝衔接。学生对于程序设计的理解水平、应用能力是千差万别的,单一的教学模式无法适应众多学生的需求,导致学习的效果大打折扣。在线评测系统(Online Judge,oj)起源于国际大学生程序设计竞赛(ACM/ICPC),是一种采用黑盒测试原理进行计算机程序正确性判断的自动化程序。该系统具有比赛公平性好、评测自动化程度高、节约人力成本等优点,广泛应用于各类计算机程序设计比赛和编程训练教学等。在线评测系统既可以指该系统的源码,也可以指该系统运行的一个实例。从信息系统的角度看,由于在线评测系统安装、维护上的难度,应当将系统软件整个生命周期中的所有软硬件资源和参与的管理员、用户综合起来,认为它们都是系统的一部分。

  龙芯OJ平台辅助教学的优势

  1易于部署、维护、管理

  整个系统建立在通用Web平台上,可以简单、快捷地搭建运行环境,编写自动化安装脚本,实现通过简单命令完成环境搭建。使用后台管理模块,可管理各级用户权限和监管数据库内的已有数据。系统中的日志记录模块,详细地记录系统运行的状态,为排除系统故障提供有力的支持。

  2)节约人力成本

  在线完成各种编程练习,不仅节约纸张资源和教学活动中消耗的教师人力资源,而且可以全天候为学生提供必不可少的实践练习机会。与传统作业方式相比,在线学习参与者可以随时提交并运行程序代码,并立刻得到程序正确性的反馈。通过上述自动化的教学手段,学生能够更好地掌握学习节奏,提升学习效果。

  3)提高教与学效率

  通过使用系统,教师可便捷地组织作业、发布作业、进行课堂点名、随堂测验以及查看班级内学生的学习状况,及时提醒存在不及格风险的学生;学生也可以方便地在系统中完成作业并即时得到作业结果,还可以在线上与教师进行专业领域的交流以学习更多的扩展知识。系统上线的一年多来,任课教师的教学过程管理效率有了大幅度的提升,学生的学习效率也得到提高。据任课教师反馈,在程序设计类课程的教学中引入本系统之后,学生的学习成绩有了明显的提高。


(OJ系统界面)

  OnlineJudge系统架构

  主体架构分为判题内核Judged和Web界面两部分,它们通过共用一个MysQL服务器实现任务队列和数据通信。判题服务Judged是一个系统服务进程,随操作系统一起启动,并随时监视数据库服务器中的任务队列;Web界面由一组PHP程序构成,运行在Nginx服务器上。当用户提交新的答案后,Web程序就将判题任务加入数据库的任务队列,随后判题服务程序Judged则自动锁定任务并完成,可以防止同一任务被多次判断而浪费系统资源。其系统结构如图所示,其中MySQL服务器、Web服务器、判题服务Judged既可以由同一台服务器承担,也可以分别由不同的服务承担,以实现分布式计算。web服务器可以采用Nginx集群,MySQL服务器可以使用主从式结构,Judged服务器可以用提交编号静态分配判题任务,也可以通过数据库的锁机制实现动务分配。这样的设计不但能够适应日常教学的小范围使用,而且可以从多个服务器集群的规模,高效应对大规模的并发服务。


(OJ系统结构)


(OJ系统架构)

  OnlineJudge系统优势

  1开发了安装向导,实现图形窗口化方式安装,并编写了详细的安装说明。

  2可视化的题目管理界面,umeditor实现超文本编辑与图片上传功能。

  3重构和改写了判题内核程序,提高了系统代码的可读性和多线程判题的性能,对多核心处理器有更好的支持。

  4支持C、C++、Java、PHP、Python编程语言。

  5数量庞大、题型丰富的高质量题库。

  6具有多国语言包,支持国外用户使用。

  7可以提供完备的咨询与在线安装、维护服务。

  8以龙芯服务器为支撑,安全可控。


(OJ系统界面)

责任编辑:刘沙