希冀平台发展进化史

1 综述

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

系统已经经历三个阶段的重要升级:

  • 第一个阶段仅仅支持程序设计类课程 + 加上完善的课程管理。
  • 一体化平台阶段,支持信息类全课程,对于高校来说,开展智慧教学,能够覆盖教学全流程、全课程的一体化教学平台(答疑、作业、考试、MOOC、实验), 特别是能够支撑在线实验(实验云),是一个必备条件,只有这样的平台才能够采集到足够全面、真实、有价值的教育大数据, 进而开展智能化的数据分析、诊断、反馈,最终形成一个良性的教学闭环。这也是目前希冀平台在高校取得巨大成功的核心因素。
  • 教育大数据采集、分析与可视化平台。

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等课程管理系统,维护成本高,性能低。一个系统使用几年后,随着使用人数的增长和数据量的增加故障频出,再加上系统升级慢,无法跟上平台的发展(例如操作系统和浏览器的升级),生命力往往只有几年,不得不更换新的系统,造成旧系统积累的数据丢失。

6. 第五阶段:在线实验,全面支撑大数据和人工智能

2017年底,增加了一种新的在线形态-在线实验,利用流行的云计算与虚拟化技术,开发了在线虚拟桌面支撑环境, 该支撑环境的初期主要目标是为了开发大数据专业的配套实验。截止今日,从技术深度和资源消耗方面,相比其它的产品,CourseGrading虚拟桌面支撑环境是目前最为先进的在线桌面形态:

  • 利用单多用户的机制,将内存、本地存储和CPU的资源消耗降低几十倍!单台普通的双路服务器能够支撑300人同时在线。
  • 使用体验方面,使用当前流行Linux发行版自带的GNOME桌面,而不是其他类似平台使用的xfce这样类似90年代的精简桌面。
  • 二次开发方面,舍弃Docker+桌面的方案,采用虚拟机方案,降低教师基于CourseGrading平台开发实验的难度,而且可以充分利用现有的云计算环境。
虽然虚拟桌面实验环境更加通用,但是对于人工智能来讲,Jupyter是国际主流的实验环境,2018年,克服了多个关键技术,开发了Jupyter环境,能够无缝对接互联网上的Jupyter笔记资源。

7. 第六阶段:优化品牌,增强二次开发能力

CourseGrading系统用户量越来越大,大家习惯称为CG,但CG又是一个动画的专有名词,又有很多老师称之为“北航的系统”,于是乎市场上出现了很多据称是“北航的系统”, 2019年竟然多次出现了需要我们自己证明我们就是那个“北航的系统”。

从2019年9月份开始,全面启用新的品牌“希冀”和新Logo,“希冀”来次CG的中文译音,同时“希冀”也有非常美好的寓意。

虽然有了虚拟桌面和Jupyter实验环境,但是对于某些课程,例如编译原理等课程,需要特殊的模拟器(MPIS模拟器Mars),使用虚拟桌面等环境,无法支撑在线考试,而且对资源压力过大, 2019年暑期,开发了基于Docker技术的“通用评测题”,支持教师定制自己的评测内核。通用评测题兼顾了通用性和低资源消耗,同时开发难度也更低,在暑期期间试用期间, 就同时完成了编译技术和数字系统设计两门实验课的自动评测。

8. 第七阶段:新一代云桌面实验平台

2020年春节期间,平台升级到5.0.0,平台完成新一代实验桌面的开发,基于新一代的实验桌面,教师完全可以在线制作实验镜像,并且支持windows操作系统,创新性的设计了“(桌面、Jupyter)工作台”, 自动评测、定制镜像、课堂演示全部0门槛,目前的远程桌面形态已经不仅仅支持计算机类课程,对于非计算机专业的仿真软件也能够完美支撑。