笔者主持的浙江大学“数据结构”MOOC课程已在爱课程网“中国大学MOOC”、网易云课堂上开设,并在微信公众号“慕课浪潮”分享内容。本文针对“数据结构”MOOC课程近一年的开课实践,总结分析了MOOC课程设计及实施过程中最关键的三个方面的经验:内容设计、视频制作、课程实施,并分析了该课程在爱课程网“中国大学MOOC”和网易云课堂两次开课的部分统计数据,据此对在线教育存在的问题进行了探讨。
一、引言
“数据结构”是计算机科学与技术专业、软件工程专业甚至于其他电气信息类专业的重要专业基础课程。它所讨论的知识内容和提倡的技术方法,无论对进一步学习计算机领域的其他课程,还是对从事大型信息工程的开发,都是重要而必备的基础。“数据结构”课程所应该培养的高级程序设计与算法分析能力不仅是学生进一步深造的潜力体现,也是用人单位选拔优秀毕业生的重要指标。
为了促进学员自己动手编程实践、解决问题,一个功能强大的实践教学平台就是必不可少的支撑。另一方面,由于MOOC的教学实施与考核都是在无监督的状态下进行,目前尚无有效技术手段保证考核结果和证书获得者与课程完成人具有可信的对应关系,所以MOOC的学习结果很难得到用人单位(包括高校与企业)的充分重视。美国的MOOC组织者(如Coursera、edX等)是通过线下有监督的考试来颁发更有参考价值的证书,但其规模受到人力资源(阅卷教师)的限制。一个有监督的、由自动判题系统支持的线上考试将可以部分解决上述问题。本文也将介绍笔者在平台建设方面所做的部分工作。
MOOC与传统教育的一个很大的不同在于,传统教育中学生是被组织在一起学习的,各种教学环节的“有组织性”非常强,形成了强大的外在驱动力。在这种前提下,即使教学方式枯燥呆板,即使学生的内在动力不被激发,也可以在一定程度上用外力“推”着学生们向前走。而且同一教学环境中学生的年龄和基础背景相似,也使得教学内容的组织较容易统一。
由于互联网让各种信息的获取变得越来越容易,各种针对人类注意力的心理学研究表明,过多信息消耗了接受者的注意力,导致信息碎片化成为不可避免的趋势。MOOC课程教学设计面临的首要问题就是,如何利用碎片化的信息为学员提供系统化的知识。传统课堂要求的按45~50分钟组织的教学内容,在MOOC中必须被更细致地梳理、切分,成为每个6~10分钟的短小视频——这使得学员可以随时随地充分利用自己业余时间的零星碎片,在注意力最能有效集中的时间区间里进行学习。同时,碎片化的教学内容组织也容易满足不同学习者的学习目标。
表1第一次课程内容的碎片设计
| 知识点 | 视频 | 时长 |
| 数据结构 | 关于数据组织,例:图书摆放 | 9min 24s |
| 关于空间使用,例:PrintN函数实现 | 4min 8s | |
| 关于算法效率,例:计算多项式值 | 10min 17s | |
| 抽象数据类型 | 8min 54s | |
| 算法 | 算法的定义 | 4min 47s |
| 什么是好的算法 | 9min | |
| 复杂度的渐进表示 | 8min 54s | |
| 应用实例 | 算法1 & 2 | 5min 58s |
| 算法3 | 7min 54s | |
| 算法4 | 6min 10s |
注意到我们强调应该设计6~10分钟的短视频,是因为有不少心理学研究表明,成年人的“倒U型注意力曲线”在峰值附近持续的时间长度大约为6~10分钟[2]。但这并不是说我们必须把一段复杂的、不可能在10分钟内讲清楚的内容硬性压缩成10分钟,或者不惜破坏内容的完整性也要切分。这个“6~10分钟”的规律只是提醒我们,应该知道学员在这样一个时间段附近会出现注意力不集中现象。教师可以通过产生额外的刺激——比如突然变换语调,或者在视频中插入一个提问(“中国大学MOOC”和网易云课堂都提供在视频中插入提问的功能,视频播放会在提问后暂停,学员必须回答了问题后才能继续播放),哪怕是开一句玩笑,达到将学员的注意力拉回到峰值水平的目的。例如表1中列出的10段短视频中就插入了6处提问。
三、重实效的朴素制作
在个人有限的精力和教学效果之间权衡之下,我们选择了注重实效的DIY朴素制作方案,即采用简单的“居家”制作设备,完全自己动手,甚至没有动用任何助教,就完成了全部138段视频的录制与后期制作。
由于后期制作是自己动手,所以录制过程可以比较自然,不必强记台词。缺点是后期制作如果精益求精,则需要花费较多时间剪辑。剪辑的要点,并不在于制作出多么炫目的视觉效果,而在于牢牢把握住对学员视线以及思路的引导。
思路引导较视觉引导更为重要。我们的课件设计是极简风格的,对所有课件中动画的设计,原则上是对思考过程的展示;而所有无助于此的元素,都不必出现,以节省学员下载课件的时间。例如,在展示一个复杂算法的伪代码时,并不是一次性将全部伪代码放映出来,再逐行讲解其功能——这是计算机执行的过程,并不是人类思考的过程。我们会从整体思路入手,先根据算法流程展示出代码框架,再逐步演示框架内各个模块的细化过程,必要时辅以实例的动画演示。
对于习惯于在课堂上与学生频繁互动的教师而言,MOOC在师生互动方面具有明显的弱点。不过,各大平台都提供了多种弥补的方法,如:视频内插入提问、视频间插入测验、学员讨论区等。充分利用这些工具,也可以在一定程度上达到较好的互动效果。
视频间插入测验则是有传统课堂无法达到的良好效果。当一个知识点讲解完成,及时的小测验可以非常有效地帮助学生检验自己的听课效果。而在传统课堂中,频繁的测验不仅对教学进度造成负担,而且增加教师课后批改的工作量,结果反馈也不能做到十分及时。MOOC支持在任何一段视频结束后,插入一个小测验,由系统自动判题,即时给出结果。学员通过这样的测验,可以检查自己对前一段视频中关键内容的理解程度,及时发现问题,还可以反复观看学习。
对于“数据结构”这种实践性比较强的课程而言,还有一个非常重要的环节,就是动手实践。目前各个MOOC平台对于程序设计类课程的实践支持较弱,而遍布各大高校的在线裁判系统(online Judge,简称“OJ”),其初衷是为参加ACM大学生程序设计竞赛的学生而建立,普遍存在几个问题:
(2)题目难度偏大。因为面向的用户是各校顶尖的参赛选手,所以题目多为竞赛型,即涉及知识点的综合性很强,但缺乏针对单一知识点的基础训练题目,也无显性的知识点关联。
(4)判题方式严苛。一般为0/1式,即通过全部测试用例可得到满分,否则零分。这种方式对初学者打击较大,并且从教学的角度考虑,区分度也较差。
针对上述问题,我们联合网易公司开发了“程序设计类实验辅助教学平台”(英文名“Programming Teaching Assistant”,简称“PTA”,网址:http://pta.patest.cn/),作为基础程序设计类课程、数据结构、算法分析等课程的实验平台,免费向全国高校教师开放。目前平台中有判断题、选择题、程序填空题、函数题、编程题共千余道,并具有以下特点:
(2)题目具有灵活的课程知识点关联,方便教师根据教学进度布置针对单一知识点的强化训练,也可以关联多个知识点设计综合性题目。
(4)函数题、编程题按测试用例评分,具有良好的区分度。
这里特别值得一提的是“函数题”的设计。函数题要求学生严格按照题目给定的接口描述,完成具有指定功能的函数代码。这类题目的优点是训练重点突出,可以让学生关注复杂算法的核心流程,而不必纠结于输入输出的格式处理或是以前已经训练过的简单函数的重复实现。例如要实现“最小生成树”的Kruskal算法,我们需要用到最小堆和并查集。这两个结构都已经在学习“树”的过程中训练过,且编程量较大,但只是Kruskal算法的辅助工具。如果不想让学生在辅助工具的实现上花费太多时间,教师就可以将这个训练出成函数题的形式,由教师准备好最小堆和并查集的功能函数,学生只要在建立最小生成树的过程中调用即可。另一方面,函数题由教师规定接口,就使得指定数据结构成为可能。例如要训练处理链表的能力,只要规定链表结点的结构,并规定函数传入的参数为链表头指针即可。
迄今我们已经先后在爱课程网“中国大学MOOC”和网易云课堂两个平台上分别开设了一个完整学期的课程,表2列出了部分统计数据。
我们自2011年8月起创办了计算机程序设计能力考试(Programming Ability Test,简称PAT),采用分级式在线考试及自动评测方法,客观地考核考生的算法设计与程序设计实现能力。目前在全国18个省/直辖市设置了考点,有包括谷歌、微软等“世界500强”企业以及百度、网易、阿里、腾讯等96家知名企业签署合作联盟协议,接受将PAT测试成绩作为衡量应聘人员程序设计能力的标准(划定分数线、提供介绍信),受到考生和企业的欢迎。我们也将达到PAT甲级考试浙江大学计算机专业学生平均分的成绩作为MOOC课程优秀证书的标准,目前有2位学员确认得到了优秀证书。
表2开课统计数据对比
更多内容请观看微信号“慕课浪潮”。
