系统进化史

1 综述

        CourseGrading 2004年4月份开始研发,2005年开始使用,至今已经持续不断研发了10余年。这个系统初始设计就是为了能够在线考试,能够与教学过程紧密结合,核心的自动评判功能也是独立研发,所以与ACM的自动评判系统有很多本质上的差异,需要深入使用才能真正体会到系统带来的便利。

         系统已经经历三个阶段的重要升级,从第一个阶段仅仅支持程序设计课程,到现在能够直接支持并行程序设计、数据结构等课程,未来我们准备打造成计算机类课程的基础平台,能够聚合学生本科阶段的所有学习数据,继而能够追踪和分析学生的学习过程。

2 第一阶段:初期版本

        CourseGrading初始目标是实现一个基于Web的支持程序自动评判的作业与考试平台,该系统基于Linux平台,Web页面使用JSP实现,程序自动评判模块使用C开发,1.0版本在2005年初投入使用,主要具备如下功能:

  • 采用黑盒测试方法对程序进行自动评分
  • 程序抄袭检测
  • 支持在线作业和在线考试
  • 在线答疑,成绩管理,学生帐号管理

        CourseGrading立项之前,经过广泛的调查发现该系统下面几个非功能属性非常重要,也是1.0版本着重解决的问题:
2.1 性能

        北航经历过使用其他自动评测系统考试期间,由于系统崩溃引发的教学事故,引发崩溃的主要原因就是性能。 北航每一届计算机系的学生加上辅修计算机的将近350人,由于项目初始资金有限,只能采用普通的PC机做服务器,所有人同时在线考试的时候,要保证每个人不会感到系统的延迟,系统一旦有延迟就可能会影响学生的答题情绪,还要考虑延长考试时间;更不能发生系统崩溃,一旦系统崩溃,将会导致教学事故。

2.2 安全性

        学生提交的程序都在服务器上编译执行,要防止服务器被植入木马或者破坏系统中保存的数据。学生成绩的安全性也非常重要,CourseGrading设立四种角色:系统管理员、教师、助教和学生。只有管理员和教师帐号可以浏览和修改成绩,必须防止帐号密码被窃取。

2.3 稳定性与可靠性

     学生历次作业与考试数据都存储在服务器上,可能会发生操作系统崩溃导致数据无法恢复,如果服务器配置较低,硬盘故障也会导致的数据损坏,因此系统必须要具备数据的备份机制,在发生无法预知的故障后,系统能够及时恢复。

2.4 1.0版本的局限性
         使用过程中发现1.0版本的很多局限性,首先,系统评测完学生程序给出的反馈信息过少,仅仅提示学生程序是否编译通过,如果编译通过提示是否通过测试数据。没有进一步挖掘程序中的信息,例如,编程风格,程序的运行效率,程序潜在的错误与安全隐患等;第二,提供编程题目类型单一,学生只能编写完整的程序,不支持传统纸质考试中常见的程序补充类型的题目;第三,对数据结构课程支持不足,无法约束或者检查出程序中使用的数据结构或算法;第四,程序抄袭检测算法能够检查出来的抄袭手段很有限,例如对改变语句顺序这种抄袭手段无法查到;第五,无法阻止Trial-and-error现象,系统没有限制程序提交次数,学生反复提交没有经过认真调试的程序;第六,缺少程序特征的识别功能,有些题目,教师可能会要求学生程序具备某些特征,例如,教师要求学生在程序中使用for循环,而不能用while循环,或者使用数组,而不能使用指针。目前系统不能自动识别这些特征。

    本系统具备基本的课程管理系统的功能,非程序设计类的课程使用该系统提交作业,答疑,同时提出了很多建议,例如增加文档抄袭检测功能,提供汇编语言程序的自动评测,并行程序的自动评测等。我们由此萌发了将本系统打造成为一个更为通用的平台,即课程自动评分与抄袭检测平台。

3.  第二阶段:升级

         从2007年初开始,我们重新设计了系统架构,一方面对增加更加全面的程序评测功能,此外,将系统进行平台化的设计,支持非程序设计类课程的自动评分与抄袭检测。历经3年的研发,我们成功推出了2.0版本,并建立网站(http://course.sei.buaa.edu.cn)供高校同行下载使用。

         历经3年的研发,我们成功推出了2.0版本,该版本的主要技术突破有:

  • 研发出可检测出更多抄袭手段的程序相似性检测工具;
  • 研发基于语意特征的文档相似性检测技术,支持互联网相似性文档搜索;
  • 以黑盒与白盒测试为基础,综合编译技术和软件度量理论,提供更多的编程题目类型(接口编程、代码填充);
  • 对学生程序进行粒度更细的评判与度量,主要包括程序正确性测试、程序复杂性与风格度量、代码静态检查、运行效率检查、程序特征识别、抄袭检测。


        功能上的改进有:

  • 采用AJAX技术,增强用户体验;
  • 具备更加完善的课程管理功能,即使非程序设计类课程依然可以使用本系统:提交作业、作业抄袭检测、答疑、课件共享、成绩管理等;
  • 具备栏目自定义功能,课程教师可以根据需要增设新的栏目。

4. 第三阶段:深化&用户体验

        从2012年至今,收到了很多高校的反馈信息与教学经验,对系统的安装、功能以及用户体验进行了无数次的改进,已经成为非常成熟和稳定的系统。这一阶段一方面深化已经有的功能,使其更加智能也符合当前的技术潮流;另外扩展新的功能,支持更多的课程;

       重要的功能改进有:

  • 并行程序自动评判(多核多线程与MPI程序的自动评测)。
  • 数据结构与算法可视化 。
  • 服务器的自动化运维(保障服务器数据的可靠性)。

5. 第四阶段:大平台&大数据

      大数据是人工智能的根基,但是教育行业特别是高等教育是特别缺乏数据的行业,一个本科生四年学习除了留下成绩、学籍档案等少量的信息,各个课程相关的学习记录都没有记录下来,问题根源在于:

  • 目前通用的学习系统系统无法满足课程的个性化需求。各个高校都部署了课程管理系统协助教师教学,但是教师使用过程中发现,这类系统根本无法满足自己课程的核心需求,例如对于算法与数据课程来说,这类课程最为关注的是算法和数据结构的时空复杂度,但是通用的课程管理系统根本无法提供这方面的帮助,教师不得不自己开发独立的系统,满足本课程的需求,导致这类课程的数据信息遗失。
  • 低劣的教育信息系统。商用的教育相关的系统普遍质量不高、用户体验差,开源系统的质量也不敢恭维,例如Moodle等课程管理系统,维护成本高,性能低。一个系统使用几年后,随着使用人数的增长和数据量的增加故障频出,再加上系统升级慢,无法跟上平台的发展(例如操作系统和浏览器的升级),生命力往往只有几年,不得不更换新的系统,造成旧系统积累的数据丢失。

 

Last modified on 2017-09-09 by zch