EduCoder:大规模开放在线实践教学探索与应用
2020-12-01尹刚王涛余跃黄井泉张洋谢冰王怀民
尹刚 王涛 余跃 黄井泉 张洋 谢冰 王怀民
摘 要:实践教学是计算机专业教学领域的深水区和制高点,EduCoder平台为疫情防控期间的计算机在线实践教学提供了重要方法和途径。在分析计算机实践教学现状和挑战的基础上,结合软件群体化方法和网构化方法,系统阐释大规模开放在线实践(MOOP)基本模型,提出在线实践教学平台体系结构,构建软件定义的智能化在线实践教学平台EduCoder,并介绍其中超过1 000门课程、4万个案例的实践项目形态和课程案例。大规模应用实践表明,EduCoder为疫情防控期间高校实施在线实践教学发挥了重要作用,在实践教学支撑和实践资源构建等方面能够有效满足高校师生的多样化需求,对高校实践教学改革与创新具有重要参考价值。
关键词:实践教学;MOOP模式;群体化方法;网构化软件;自动化评测
DOI:10. 11907/rjdk. 202129
中图分类号:TP434 文献标识码:A 文章编号:1672-7800(2020)010-0001-07
Abstract: Practical teaching is the deep water area and commanding point of computer professional teaching area. This paper analyzes the current situation and challenges of computer practical teaching, combined with crowd-based method and Internetware method, systematically explains the basic massive open online practice (MOOP) model, proposes the architecture of online practical teaching platform, constructs a software-defined and intelligent online practical teaching platform named EduCoder (www.educoder.net), and then introduces its diversified practice project forms and systematic practice course cases. The large-scale application shows that EduCoder played an important role in the implementation of online practical teaching in universities during the prevention and control period of Covid-19. It effectively meets the diversified needs of college teachers and students in terms of practical teaching support and practical resource construction, which has significant reference value for the reform and innovation of practical teaching in colleges and universities.
Key Words: practical teaching; MOOP model; crowd-based method; Internetware; automatic evaluation
0 引言
近年来,大数据、物联网、人工智能等新型信息技术快速发展,并不断从前沿探索走向大规模应用,信息技术人才培养面临岗位规模化、课程多样化、能力综合化等严峻挑战,高校计算机类专业人才培养体系亟待面向能力培养进行全面升级。
计算机等工科专业学生的实践能力不能只依靠课堂教学,还需要创造一个实践支撑环境,让学生在实践过程中通过“学、做、练、悟”逐步形成[1]。麻省理工學院(MIT)一直秉持“知识学习与操作训练相结合”(Mind and Hand)的校训,并于2017年发起了新一轮工程教育改革“新工程教育转型”(NEET)计划;国防科技大学计算机学院长期聚焦国家重大工程项目,在实践中发现科学问题、突破关键技术,并于2015年全面开始计算机实践教学改革。
近年来,教育部针对本科和高职院校均提出实践量化考核要求。2018年1月,教育部发布《普通高等学校本科专业类教学质量国家标准》,要求计算机类专业的主要实践性教学环节“具有满足教学需要的完备实践教学体系,4年总的实验当量不少于2万行代码”,“至少完成2个有一定规模和复杂度的系统设计与开发”等;2019年7月,教育部发布《高等职业学校专业教学标准》,计算机相关专业均要求“实践性教学学时原则上不少于总学时的50%”。
当前,高等院校的课堂教学通过采用慕课(MOOC)等方式提升效率,实现了大规模视频资源共建共享,取得了丰硕成果和宝贵经验[2]。但实践教学模式主要局限在相对封闭的范围内,提供非常有限的实验实训资源,难以满足学生能力培养需要。如何将“互联网+教育”拓展到实践教学领域,构建功能集约、资源共享、开放充分、运作高效的实验教学平台和体系,是当前计算机教育领域面临的重大课题。
本文介绍一种新型计算机实践教学平台EduCoder(中文名称“头歌”,www.educoder.net),将群体协同、开放共享、持续评估的互联网创新机理[3-4]引入实践教学平台构建过程,形成了一种支持大规模开放在线实践(Massive Open Online Practice,MOOP)的教学资源共建共享新型教学模式、平台和资源库,突破了自动化评测等一系列难题,为院校和企业实践教学模式升级提供了重要方法和途径。2020年新冠肺炎疫情期间,教育部发布高校在线教学工作指导意见,EduCoder被列为高校在线教学推荐实施方案,并发挥了重要作用。
1 相关工作
20世纪90年代以来,数字化教学技术得到快速发展,涌现出一系列在线实践教学工具和平台[5-10],对网络化创新实践模式的构建和完善具有重要借鉴意义,具体分类介绍如下。
1.1 社区开发类教学平台
开源软件社区为高校计算机类教学活动提供了丰富的软件代码,为高校计算机实践教学提供了丰富的学习资源和交流平台,是早期MOOP的典型代表。此类平台支持大规模开源开发者分享开源技术、传播开源理念、推广开源项目,形成了产教一体化的在线学习模式,典型代表包括Github.com、SourceForge.net、Trustie.net、Gitee.com、CSDN.net、learnerhub.net等。其中,Trustie为EduCoder开源开发体系构建提供了重要思想和方法,使EduCoder能够有效支持在线协同开发、部署评测、交流共享等各类开源学习和开发活动。
1.2 技术实验类教学平台
技术实验类教学平台主要以云服务方式,为师生提供在线实验环境。例如,合天智汇(hetianlab.com)是国内较早提出虚拟化实验教学概念的平台[6],构建了面向网络空间安全人才培养的实践教学环境和知识体系。类似平台还有清华大学ucore实验平台(os.cs.tsinghua.edu.cn/oscourse/)、CMU的计算机系统实验平台[7]、U-SaaS(usaas.net)、实验楼(shiyanlou.com)等。此外,华为、腾讯、阿里等云计算平台也都开始提供类似实验环境支撑。目前,EduCoder支持大规模实验资源共建共享,提供了1 000多种在线实验课程、40 000多个技术实验案例,并处于持续快速增长中。EduCoder的每个案例均支持智能化评测、闭环式教学管理,同时面向全国高校师生开放使用。
1.3 虚拟仿真类教学平台
新工科建设对信息技术类课程教学提出了新要求,虚拟现实与仿真技术的引入推动了课程教学方法改革,也诞生了一批虚拟仿真教学平台。例如,国家虚拟仿真实验教学项目共享平台(ilab-x.com)基于云计算资源灵活、安全可控、数据可靠的特性所推出的面向虚拟仿真实验教学项目的在线应用服务;润尼尔(rainier.net.cn)等一批虚拟仿真教育厂商利用VR等技术支持实践教学案例构建。EduCoder提出了软件定义的虚拟仿真体系结构,支持学生可编程的3D实景训练环境,让师生以编程操作方式进行仿真实践教学,是对现有以3D建模为核心的虚拟仿真课程的重要拓展。
1.4 基础编程类教学平台
此类平台通常称为OJ(Online Judge)平台,侧重围绕Java、Python、C、C++、Ruby等编程语言,基于网络开展编程训练。例如,基于Codecademy(codecademy.dev)、Cloudcoder(cloudcoder.org)等平台构建了基于Web的开源编程练习系统。国内相关平台包括北大OJ平台[9]、LeetCode(leetcode.cn)、PTA(pintia.cn)、汇智网(hubwiz.com)等,通过提供内置的Web端编程工具为学习者提供练习环境。此外,Stanford大学开放的Moss系统为全球高校提供代码查重服务(theory.stanford.edu/~aiken/moss/)。EduCoder提供了通用实践项目、编程实践项目、笔记实践项目、仿真实践项目4种实践模式,其中编程实践项目对应于OJ类实践资源。
1.5 竞赛类学习平台
竞赛类学习平台主要采用在线编程竞赛的形式促进学习者进行程序设计语言学习、算法设计、编程应用等。例如,Topcoder平台(topcoder.com)每个月都有2~3次在线编程比赛,参赛者可根据自己的爱好选用Java、C++、C#、VB或Python进行编程。Kaggle平台(kaggle.com)为学习者提供了举办机器学习竞赛、托管数据库、编写和分享代码的环境,近些年吸引了大量学习者的关注。EduCoder将全栈化智能实践技术引入在线季赛,有效支持在线实战化的全流程竞赛和活动。
上述平台从不同维度为计算机实践教学提供了支持,但在全技术系列的实践项目共建共享、多样化的实践教学操作体验、教学管理的无缝对接、实践项目的自动化评测等方面,尚难以满足高校实践教學的个性化、多样化、专业化、动态化需求,这些工作为高校实践教学工具和平台的持续改进提供了大量有价值的方法和经验。EduCoder在汲取现有工作成果优势的基础上,将开放创新机理引入实践教学平台构建,开拓出全新模式和生态体系。
2 MOOP基本模型
随着网络化创新实践模式的变化,计算机技术架构宏观上表现为连接万物的软硬件创新生态系统,微观上则呈现出系统化、全栈化、服务化等复杂工业特征,对计算机类专业的实践教学平台及其案例库构建提出了严峻挑战。主要包括3个方面:
(1)实践课程构造难。以视频为主要载体的在线教学体系不能有效集成实践类课程需要的技术架构和应用案例系统,需要设计新的课程结构与形态。
(2)实践案例共享难。各类课程使用的案例可能会涉及数百种技术架构,现有视频类在线教学平台难以支持其复用和传播。
(3)实践过程评测难。传统的客观题评价手段难以满足各类实战型技术系统测试要求,实践类学习活动评测面临严峻挑战。
在工业研发体系与高校教学体系持续融合的趋势下,上述挑战日益凸显。高校科教活动具有创作和共享特征,企业研发活动具有生产和服务特征,如何将两者结合,实现产教深度融合,是核心问题。国家863计划项目Trustie团队系统地提出了软件开发的群体化方法,将软件工程方法与互联网群体协同机理相结合,提出了大众化协同开发、大范围资源共享、持续性可信评估的群体创新机理[2]。
群体化方法对计算机实践教学面临的挑战具有全面指导意义,Trustie课题组据此提出了面向计算机综合能力培养的大规模开放在线实践(MOOP)的概念[1],本文将其拓展为一个实践项目模型、两个空间模型、一个开发运行支撑平台,如图1所示。
MOOP模型以实践项目为核心,包括实践项目的创作与生产空间、实践项目的运行与服务空间。实践项目本质上是软件工程项目,包含项目开发态和运行态,因此需要一个功能完备、高度开放的开发运行平台,本文基于Internetware范式[3]的网构化软件开发方法和技术体系构造实践教学平台运行和管理框架。
MOOP模型为计算机实践教学平台和课程资源设计提供了基本参考模型,有助于实现以互联网平台为依托,联接大规模教师和学生群体,围绕开放实践项目开展协同创新、共建共享,并在参与项目创作生产与运行服务的持续演化过程中提升学生能力,实现能力培养目标。
3 EduCoder在线实践教学体系结构
EduCoder是Trustie项目团队联合产业界推出的一种网构化实践教学平台和生态系统。EduCoder基于MOOP模型,全面引入开源软件社区的项目协同开发流程和云化开发工具。本文在此基础上,结合疫情期间线上线下教学遇到的问题和形成的经验,提出一种“O2OC+O2OP”实践教学模式。其中,O2OC(Online To Offline Classrooms)是面向课堂教学的线上线下融合模型,O2OP(Online To Offline Projects)是面向实践教学的线上线下融合模型。其中,O2OC为实现群体化实践教学提供了保障和管理支撑。在此模式下,实践项目是教学活动和实践活动联结的核心,网构化实践教学平台提供教学模型和实践项目的全流程管理和运行支撑。
3.1 群体化实践教学模型
群体化实践教学模型为教学活动的基本流程和角色职能提供了参考模型,基本模型包括:分布式教学过程协同模型、案例化实践项目共享模型。该模型的核心目标是实现线上线下课堂教学活动和实践教学活动数据一体化。
分布式教学过程协同模型定义了包括O2OC和O2OP的教学过程。在O2OC层面,模型要求师生的线上课堂教学活动(如发布资源、布置作业、开展考试、毕设管理等)和线下课堂教学活动(如班级签到、线下考试、毕设答辩等)有机结合,并在数据层面统一到线上平台。在O2OP层面,模型要求线上实验活动(如在线编程实验、网络房展实验、云计算实验、大数据和人工智能实验等)和线下实验活动(如网络设备实验、独立靶场实验等)能够有机结合,并在线上平台汇总全部线上线下实践项目的过程数据。“O2OC+O2OP”的线上线下实践教学模式如图2所示。
3.2 网构化实践教学平台
实践教学除模式创新外,具有较为复杂技术要求和较高门槛的支撑平台创新至关重要,这也是MOOP类平台发展较为缓慢的根本原因所在。
EduCoder在群体化方法[2]和网构化方法[3]的基础上,提出了网构化实践项目体系结构,如图3所示。实践项目也常常被称为实训项目、实验项目,是一种集知识讲解、案例解析、开发实战、运行部署、实时评测等于一体的新型智能化在线实践教学资源,包括四大核心結构:挑战式在线教程、工程化经验、企业级项目、云际计算环境。
实践项目能够助力教学体系从“以知识为中心”拓展为“以实践为中心”。在实践项目中,在线教程围绕具体任务按照逐步进阶的方式组织关键知识点讲授;工程化经验和企业级项目将源自产业界的真实案例及开发经验融入实践项目中,并设计相应的编程任务、提供企业级开发环境、设计自动化评测等;云际计算环境能够让师生随时启动来自不同云平台的计算资源[11]。
特别是,EduCoder提供了实践项目的共建共享体系,每个实践项目能够以开源/闭源模式发布,师生可以开展自主教学创新,进行大范围共建和共享,可按需快速形成个性化实践教学体系。
3.3 在线实践教学步骤
EduCoder能够有效支持“课堂教学”和“实践教学”的一体化运行,其在线实践教学步骤如图4所示。
教师完成平台注册后:①在平台中为本学期将授课程创建“教学课堂”,在教学课堂开展各种常规教学活动;②将实践项目发送到课堂,学生开始在线学习和实战;③教师可以复制、修改开放的实践项目;④教师逐步积累形成自主的实践课程,据此申报教学成果、教改项目等。
教学课堂能够有效支持课件资料管理、视频直播、作业考试、分班签到、统计报告、实践任务等。其中,实践任务来自实践项目库。平台中的实践项目以实践课程的方式按章节组织,便于师生按需选用。在此基础上,EduCoder可以为整个专业的人才培养方案提供一体化的实践教学支撑,形成EduCoder在线实践教学工具、资源与服务体系(彩图扫OSID码可见)。
4 大规模实践教学资源库
目前,EduCoder平台联合Trustie和IntelliDE社区,汇聚了国内产业界和教育界的大规模实践教学资源,形成了技术、课程方向齐全、案例丰富的实践教学资源体系。
EduCoder官方社区和各高校平台形成了超过4万个实践项目、数百个技术运行环境,并处于快速增长中。
4.1 多样化的实践项目形态
针对不同类型技术架构和实践教学特点,EduCoder设计了多样化的用户使用模式和自动化评测机制,包括通用实践项目(A类)、编程实践项目(B类)、笔记实践项目(C类)、仿真实践项目(D类)等。其中,A类项目支持所有线上实践类型,内置DevOps全流程支持,功能最强大;B类支持Online Judge类型的在线编程实验,聚焦题库建设场景;C类支持Jupyter Notebook(https://jupyter.org/)交互式实验,聚焦数据分析、深度学习等场景。
上述4类实践项目能够以在线编程模式、命令行模式、图形化操作模式、虚拟仿真模式、Jupyter Notebook模式为师生提供支持,例如:
(1)在线编程模式。该模式主要为用户提供在线编程窗口,用户针对实践项目中的开发任务进行在线代码补全,完成相应的功能要求。
(2)命令行模式。该模式主要支持对远程虚拟机的访问和操作,完成环境安装配置、使用体验等任务,包括Python编程、大数据框架安装等均支持该模式。
(3)图形化操作模式。该模式支持通过远程桌面进入软件图形化界面进行操作完成编程任务,典型的如路由器配置等任务,例如“基于网络仿真器组建小型局域网”实践项目(https://www.educoder.net/shixuns/l6caes5u/challenge,彩图扫OSID码可见)。
(4)虚拟仿真模式。该模式支持通过虚拟仿真界面进行操作以完成相应任务,比如系统组装、通过编程直接控制演示仿真效果,帮助学生更好地理解和实操,例如“计算机拆解组装虚拟仿真实验”实践项目(彩图扫OSID码可见)。
4.2 體系化的实践课程案例
以实践项目为基本单元,可围绕不同的技术或专业方向构建形成体系化的实践课程,支持完整的课程教学。
4.2.1 程序设计类教学案例
程序设计是计算机专业的基础课和大学通识课,EduCoder平台的在线实践课程已覆盖包括Python、C/C++、Java、PHP、C#、Matlab、Verilog等几乎所有的编程语言以及数据结构等课程。以国防科技大学毛晓光教授的《大学计算》为例(https://www.educoder.net/paths/149,彩图扫OSID码可见),课程面向“计算+”交叉融合的新工科计算能力需求,在精心设计的复杂真实案例中植入计算所需知识、方法、可能问题等,逐步培养复杂工程问题的计算分析和计算研究能力。《大学计算》全课程基于Python语言进行组织,共11个章节、107个实践项目,能够支撑对学生编程开发能力和计算思维的全面培养。
4.2.2 系统能力类教学案例
系统能力培养是计算机专业教育的战略重点,长期面临挑战。平台基于软件定义和虚拟化技术,实现对体系化系统能力培养的支撑。平台已发布的典型系统能力类在线实践课程包括《计算机组成原理》《编译原理》《MySQL数据库》等(彩图扫OSID码可见)。其中,《计算机组成原理》设计了7个章节、96个实践项目,让学生从门电路开始逐步设计组合逻辑、时序逻辑、运算器、存储系统、数据通路和控制器、流水控制逻辑直至完整的 MIPS CPU以深入理解计算机系统,以加深对硬件系列课程的理解。
4.2.3 软件工程类教学案例
软件工程是计算机大类专业的核心专业课程,平台的《软件工程》实践课程(彩图扫OSID码可见)以培养解决复杂工程问题能力、系统能力、创新实践能力和软件工程素质为目标,依托EduCoder平台打通理论讲授和工程实践。其中,国防科技大学毛新军团队设计了分析和阅读开源软件、开发创新软件系统两项包含多个子任务的相对独立又逐级递进的实践任务,实现学生能力和素质培养[12-14]。《软件工程》共分为14个章节,50余个实践项目,涉及编程规范、质量分析、单元测试、群体化软件开发等内容,培养学生基础编程和项目实践能力。
4.2.4 人工智能类教学案例
人工智能类专业课程涵盖机器学习、深度学习等前沿技术,各类算法及学习框架架构差异大,对底层计算资源要求高,需要包括CPU、GPU等不同类型资源的支持。EduCoder平台设计了按需调用、弹性伸缩的资源管理策略,实现了对各类算法和框架的支持。以平台的《机器学习》在线实践课程为例(彩图扫OSID码可见),该课程以周志华教授的《机器学习》教材为参考,将理论讲解和案例介绍嵌入在线实训中,围绕具体问题和案例展开,进行伴随式学习和实践。整个课程共分为6章、85个各类实践项目,内容涵盖各类经典机器学习算法。
此外,平台还开设了包括自然语言处理、深度学习等在线实践课程,支持包括TensorFlow、PaddlePaddle、Keras、ModelArts等不同类型的深度学习平台和框架。
5 应用实践与验证
目前,EduCoder平台已经形成了国内高校计算机专业的实践教学社区,来自1 000多所高校师生在平台中开展实践教学应用与资源创新。特别是新冠肺炎疫情期间,EduCoder有效填补了线上实践教学的短板。2月5日,教育部印发《关于在疫情防控期间做好普通高等学校在线教学组织与管理工作的指导意见》,将EduCoder列为高校在线教学解决方案。
5.1 实践教学资源共建共享效果
EduCoder采用开放在线共建共享和持续迭代优化模式,快速实现了大规模教学资源的共建、共享和优化,在线课程资源覆盖了几乎所有IT方向,实践项目超过40 000个。
图5和图6是疫情期间(2020年2月1日-7月31日)增长和更新的实践项目数量。可以看出,Python、C/C++、Java是国内高校计算机实践教学使用最多的编程语言,MySQL、Hadoop、Hbase、Spark等是数据库和大数据方向的热门技术框架;在课程方向上,程序设计类课程体量最大,云计算与大数据、人工智能等专业方向增长迅速。这些数据为社区支持重点及国内高校实践教学改革的关注点提供了一定借鉴。
5.2 学生实践能力培养效果
应用数据表明,该平台能够有效提升学生的实践学习积极性和实践能力。图7是某地区20所高校在2020年3月疫情期间的班级平均在线学习评测情况,可以看出,随着课程教学的推进,学生每日举行在线实验评测的次数都保持在较高水平。这一结果说明,在线实践平台以及游戏化闯关式的实验实践充分激发了学生探索的积极性。
同时,学生在实验实践过程中掌握的知识点和技能点能够快速增加。截至2020年3月底,上述地区的班级平均获得的知识点总数超过23 000个。图8是3月份这些学生挑战实践项目总数、通关总数与知识点增长曲线图。
6 结语
实践能力培养是计算机和工科专业人才培养的重点和难点。在软件定义一切的时代,EduCoder采用群体化和网构化软件开发方法对计算机实践教学资源结构、支撑平台和运行模式进行了一系列升级和创新,并汇聚了一大批高校和企业教研专家群体。
EduCoder实现并拓展了大规模开放在线实践(MOOP)的概念和模式,综合利用软件工程和人工智能技术,突破了实践教学面临的实践案例构造难、实践资源复用难、实践能力评估难等一系列难题,提供编程IDE、命令行、远程桌面、3D虚拟仿真、Jupyter Nootbook、Web交互、App下载等多样化在线操作环境,以及全栈自动评测、代码查重等机制,有效服务了来自1 000多所高校的师生、共建共享了超过40 000个实践项目,为高校计算机实践教学提供了大规模在线实践教学平台和实践案例资源库。
参考文献:
[1] 王怀民. 从MOOC到MOOP[C]. 北京:2018年中国高校计算机教育MOOC联盟峰会,2008.
[2] 李晓明. 中国慕课现象:六年实践与认识[J]. 中国大学教学,2019,41(11):10-12.
[3] 王怀民,尹刚,谢冰,等. 基于网络的可信软件大规模协同开发与演化[J]. 中国科学:信息科学, 2014, 44(1):1-19.
[4] 梅宏,黄罡, 赵海燕, 等. 一种以软件体系结构为中心的网构软件开发方法[J]. 中国科学E辑:信息科学,2006, 36(10):1100-1126.
[5] 张召海,韩来权,韩秀超,等. 在线实验平台及教学辅助策略研究[J]. 计算机教育,2019,17(4):34-37,40.
[6] 刘欢迎. 创新计算机实验教学,开启MOOE新时代[J]. 计算机教育,2015,13(9):20-23.
[7] School of Computer Science,Carnegie Mellon University.Lab machines of introduction to computer systems(ICS)[EB/OL]. http://www.cs.cmu.edu/~213/labmachines.html, 2020.
[8] HERADIO R,DE LA TORRE, L,GALAN D,et.al. Virtual and remote labs in education: A bibliometric analysis[J]. Computers & Education, 2016, 98:14-38.
[9] GUO W. Peking University oneline judge and its applications[J]. Journal of Changchun Post and Telecommunication Institute,2005(2):170-177.
[10] CHEANG B,KURNIA A,LIM A, et al. On automated grading of programming assignments in an academic institution[J]. Computers & Education, 2003, 41(2):121-131.
[11] 史佩昌,王懷民,郑子彬,等. 面向云际计算的自主对等协作环境[J]. 中国科学:信息科学,2017,47(9):1129-1148.
[12] 毛新军,尹刚, 尹良泽,等. 新工科背景下的软件工程课程实践教学建设: 思考与探索[J]. 计算机教育,2018,16(7):5-8.
[13] 王涛,白羽,余跃,等. Trustie:面向软件工程群体化实践教学的支撑平台[J]. 计算机教育,2018,16(7):18-22.
[14] 毛新军. 基于开源和群智的软件工程实践教学方法[J]. 软件导刊,2020,19(1):1-6.
(责任编辑:孙 娟)