用MOOC来实现《数据结构》课程CDIO教改的探讨
2018-05-15王翔
王翔
摘 要:本文分析了应用型高校数据结构课程在CDIO的教改中目前存在的一些问题之后,结合课程本身的特点和应用型高校的培养要求,阐述了MOOC平台在协助教师实现“翻转课堂”时的一些注意事项,并指出了MOOC平台在此过程中尚需改进的一些地方。最后本文以实际例子示范讲解了利用“MOOC”来实现应用型高校CDIO教学的过程。
关键词:MOOC;数据结构;翻转课堂;CDIO
中图分类号:TP393.0 文献标识码:A
Abstract:The paper analyzes some existing problems in the CDIO teaching reform of Data Structure in application-oriented colleges and universities.Based on the characteristics of the course and the talent cultivation requirements in application-oriented colleges and universities,this paper expounds some considerations on the application of the MOOC platform to assist Flipped Classroom teaching.Some effective measures are proposed to improve the MOOC platform.Finally,some practical examples are provided to demonstrate and explain the CDIO teaching process with MOOCs in application-oriented colleges and universities.
Keywords:MOOC;Data Structure;Flipped Classroom;CDIO
1 引言(Introduction)
《数据结构》是高校计算机大学科的一门核心专业必修课,侧重于研究在各种复杂的情况下,如何设计和组织数据在计算机中的存储表示与涉及到的基本算法实现等常用技术。通过对已较为成熟的一些常用结构和算法的学习并掌握其实现的基本原理,这门课程可以使学生在未来复杂情况下数据的组织、结构的设计和创新能力的提高得到一定的训练和启发。
CDIO的基本模式是“构思(Conceive)—设计(Design)—实现(Implement)—运行(Operate)”。如何借助MOOC在线教育的技术,来攻克《数据结构》在CDIO教改过程中的一些顽疾,利用“翻转课堂”来实现CDIO工程教育理念,是本文研究的主要目的。
2 应用型高校在《数据结构》CDIO教改中存在的
问题(Problems in CDIO teaching reform of Data
Structure in application-oriented colleges and
universities)
《数据结构》这门课程理论非常饱满,内容比较抽象,同时又注重一定程度的实践。在很多高校的CDIO教改过程中,这门课程一直是一个老大难的问题。同时它也是让很多学生为之焦头烂额的一门课程。不少优秀的一线老师已经对其中原因作了很多的分析,笔者在这里大致地整理并加上一些个人看法。
2.1 学生层面
(1)学生对该门课程的先导知识没有完全掌握,基础不够牢靠
数据结构的先导课程主要是《C语言程序设计》。根据笔者多年的课堂调查,已及格通过,但在开课前仍有超过一半的学生对C语言的编程能力存在很多问题,不想写,不敢写,不懂怎么写。数据结构中大量使用到了比如函数框架设计及传参、一级指针、结构体、typedef、二级指针等。而这些内容,恰好是学生最薄弱的环节,学生普遍不会用或不敢用[1]。
另外,数据结构还需要学生具备面向对象的一些设计理念和思想。而这部分内容,大部分高校尚未在此阶段开相应的课。学生对“某个数据结构,以及建立在该结构基础上的各个方法之间的关系”“结构和相关算法写好之后如何使用”等相关内容缺乏到位的理解。
(2)教材没有针对性,大部分教材不够形象和细致
相当大一部分985院校的教材追求理论完善、逻辑缜密、覆盖面广。但应用型普通高校的学生对此似乎并不太买账[2]。在他们的眼里看来,这种教材难度过深,图表和真实代码都太少,对一些算法难点的描述和讲解太高估了读者的抽象思维能力,对一些算法代码的实现太高估了读者的实际编码能力(例如对教材上伪代码的编程实现)。
学生在使用教材时需要像看英文书籍一样全神贯注,特别辛苦。基础较差的同学在翻阅前若干个算法或结构时已经非常吃力,这时你告诉他这本教材的数据结构和算法介绍很齐全,后面还有100—120个算法。这并不能激发这类学生的好奇,而只会让他们合上书本。笔者认为,相比于给学生介绍全面和抽象的算法而言,一本教材,如果能让学生对数据结构更容易产生学习兴趣和一定的自信,则这种教材可能更适合普通应用型高校的學生。教材在此充当的是引路人的角色,而不是字典的角色。
(3)学生的理论和实践脱节
该门课程的理论知识非常饱满,从而使得编码实践的时间常常捉襟见肘。学生学了一学期,期末考试通过了,却从未写过一个标准的完整的链栈类的代码,遑论用栈结构来编码解决实际问题了。不是老师不想教,或者没能力教,而是在有限的时间内老师实在腾不出精力来指导大部分学生。学生长时间写不出来一个代码,慢慢就会丧失信心和兴趣。
(4)学生的课堂效率低下
这个问题在普通的应用型高校中非常普遍。老师在课堂上传授了100%的信息,但是学生因为注意力难以一直集中,所以只听到了可能80%;其中能当堂听懂的内容可能就不超过60%了(和知识点难度、悟性、基础、预习等相关);在听懂理解后一段时间还记得的内容只剩不到30%了(因为缺乏及时的笔记、课后练习及反馈确认)。老师在课堂上使劲浑身解数,七十二般变化,费时耗力,但实际效果仍不太理想。
2.2 教师层面
(1)教学方法比较传统单一
这个问题之前已经有很多论文指出过,大致思想就是希望能夠尽量多采用PPT或者动画。笔者在这里需要补充强调的是,虽然动画比实际代码更能形象生动地展示出算法中的数据变化的一些关系,但因为本门课程必须要重视实践,所以在课堂上不能只演示动画,必要时,必须要针对一些算法进行代码运行的现场演示,让学生直观地看到最终的成果,给学生一个直接的示范效应,让学生在课后的独立编码之前做到心中有底。
很多老师不太愿意在课堂上展示和运行代码,甚至提供给学生的课件代码本身都运行有问题(其中尽管可能只是一些很小的原因造成)。需要指出的是,在计算机大学科的大部分实践性强的课程中,板书固然已经过时,有时甚至连PPT也略显不足。教师需要在课堂上适时地在真实代码环境下演示运行,使得坐在最后一排的学生都能看清楚屏幕上的每一行代码。从这个思想来看,目前的大学阶梯教室的多媒体幕布的尺寸大小,还停留在PPT时代。
(2)对实践环节的重视不够,与实践相关的信息渠道不通畅
本门课程的实践课时较少,老师难以在为数不多的实践课中对每个学生遇到的问题予以指导,反馈不够及时。学生在缺少指导、反馈和监督的情况下,慢慢就会失去亲自动手实践的动力。这个问题同样出现在作业中。当老师费时费力地把每个学生的作业代码批阅完,写下详细批语,并下发给学生后,往往两三个星期已经过去了,学生早已没有了刚完成作业时那种急切想知道评价指导的冲动[3]。
3 借助MOOC来实现“翻转课堂”(Implementation
of Flipped Classroom with MOOCs)
以往的教改,主要都集中在教学观念、课堂教学方式和技巧等方面,最终的要求都会落实到一个问题上,那就是要加大老师在课堂前后的投入。而课时有限,绩效衡量不便,所以一线老师的积极性难以提升。“翻转课堂”是一种崭新的教学模式。它指学生在课外提前完成知识的自学,把课堂变成了师生之间互动沟通的场所,包括答疑解惑、知识的运用等。翻转课堂对传统的课堂理论知识传授提出了“压缩课时”的要求,以便腾出课堂时间来进行师生互动。但是如何在很短的课时内保质保量地完成理论知识的传授?MOOC平台很好地解决了这个关键问题。
MOOC利用网络技术使得“学生接收了多少?老师付出了多少”,在很大程度上把老师从基础知识传授的繁重任务中解脱出来,将主要精力放到学生的动手实践指导中去,从而使得“翻转课堂”这一教学模式成为可能。
MOOC具有“大规模”(Massive)的特点。老师针对每个知识点,录制短小精干详细而生动的视频,让学生在课外环境中播放自学。老师只需要录制一次视频,无数的学生能够反复重放。这大大降低了老师重复讲解的劳动量,并放大了老师对某个视频详细生动讲解的贡献。同时,这种类似于批量化的模具复制,可以预先将学生这块材料打造成大致成型的“毛坯”,然后在课堂上再根据个体差异情况来“精雕细琢”[3]。这样做,减少了老师的工作量,同时也在一定程度上确保了良好的教学质量。
MOOC的“在线”(Online)特点,在于它利用计算机网络在时空领域中的充分延展,使得学生可以在自己精力最充沛的时间或者其他碎片化的时间里进行学习,从而获得更好的学习效率。同时,MOOC将预先设定好的题库和视频完美结合,杜绝了学生滥竽充数的投机心理。高校中的MOOC可以要求只有对标记为“必做”的习题(这部分习题不必太难,但应覆盖视频的基本内容)正确完成,学生才能播放下一个知识点的视频(基础较好的同学也必须至少要完成一次每个视频的“必做”习题后才能定位到自己最感兴趣的视频)。而习题的判定和答案也能在学生做完之后马上给予公布展示。这种通过练习驱动学习的模式,让参与者记忆深刻,稳扎稳打,得到更好的学习效果和自信[3]。而且,教师可以在系统后台了解学生完成习题的各方面情况,为下一次“翻转课堂”的课堂交流拟定主要的内容。
“翻转课堂”中一个非常重要的前提,就是要求学生在课前已经通过其他渠道大致上掌握了本堂课的基础知识点。这一点在实际实施时如果不能确保,则偷懒者在课堂上将难以互动,也会倒逼教师去讲解基础理论,从而使得“翻转”失败。但采用MOOC的模式之后,我们可以通过MOOC来收集本班学生在MOOC中的登录信息、观看视频、在线习题等各方面的相关信息,在上课前一天就能基本上了解学生的预习情况。在开始讲课后,首先可对预习效果做一个大约10分钟的确认,比如随堂抽学生解答一些与新知识相关的非常基础的习题或概念定义。对于学习极度不自觉甚至找人冒名顶替在课前帮自己预习或习题代做的学生,可通过每隔两三周一次的有监考的过程化考核来及早发现和警示滥竽充数者,彻底杜绝学生的投机懒惰心态。
对于MOOC中的考评模式,除了上述的随堂抽问和过程化考核之外,最重要的方法就是嵌入到视频讲解过程中或者单元测试中的习题库了。这部分内容,以最直接的方式裁定了学生自学的即时效果,所以必须要做到覆盖全面、难度适当。计算机可以比较容易地判断客观题和填空题的答案,也能判断出编程题的输出是否正确,但是在数据结构课程中,计算机很难判断学生所采用的算法、函数架构、模块或接口设置等是否符合老师的指定要求。在这种情况下,采用生生互评是一个比较好的模式。研究表明,超过五人以上的同伴互评成绩与教师给出的成绩相差无几[4]。这种模式在MOOC中已经得到了绝大多数教授团队和学习者的认可。
笔者需要指出的是,在评价时,可适当采取匿名的方式,即评价者不知道眼前这份作业是谁的,在评论完之后,评价者才能看到其他评价者对这份作业的评语。了解其他评语者对问题的思考方式和解决办法,可以使自己对这部分知识的掌握更加全面。评语成绩差异较大时可由系统自动送交教师点评裁定,从而确保作业判分的公正性和维护正确答案的权威性。
MOOC平台是老师的“影子”和“代言人”,其创建初衷是促进名校教育资源的公平共享,所以没有必要每个高校都去构建自己的MOOC平台或录制全套MOOC视频[5]。但是不同层次的高校,对学生的要求和培养目标有所差异,而学生的基础和领悟能力也有所不同,所以不同层次的高校对课程的考核标准也会有所不同。MOOC平台不仅对学生是“Open”的,对各大高校的任课老师也应该是“Open”的,不能搞“一言堂”。在现有名校MOOC平台的基础上,老师以某校课程管理者的身份进入平台,在一定比例限制内,对碎片化的视频、习题等内容进行增加、屏蔽、替换等定制化管理。这样既能充分利用现有的国内MOOC平台资源,避免重复建设,又能突出本校本课程的特色,降低应用型普通高校的教师参与MOOC建设的成本,提高其参与MOOC建设的积极性。
4 借助MOOC来实现CDIO教改(Implementation of
CDIO teaching reform with MOOCs)
数据结构作为研究数据结构和算法相关的课程,要求学生能够根据问题需要,分析和设计最恰当的数据结构,并采用最适合需求的算法来实现。这样的培养要求,需要老师在完成规定理论知识传授的前提下,还要针对每个学生在编码时百花齐放的算法思路或框架等分别做出差别化指导。这个工作量是很大的。在教学经费有限和绩效难以量化的情况下,目前基本上主要是靠教师个人的职业操守和责任心在支撑。
MOOC的出现,使得“翻转课堂”成为可能,从而能够对CDIO的保质量实施提供有力保障。教师可以把大量的基础知识内容和编程基本技巧的讲解,放在MOOC平台上让学生自学,并从中监督学生的预习情况。在正式上课的时候,老师对简单的内容不再细致讲述,而是根据学生的预习情况,选其中的重点或实践过程中的难点来进行统一讲解或差别化辅导等,将辅导的重心在一定程度上往实践方面倾斜。
下面以数据结构课程中的“马步问题”为例来阐述过程。
(1)在课前,需要学生观看相关的MOOC视频。视频主要包含针对马步问题所涉及的“回溯法”的基本思想的讲解及细致分析、部分代码框架、编写环境和测试环境的展示等(若遇到复杂的环境,甚至可以提供虚拟机镜像文件,最大程度地让学生不受其他因素的干扰)。
(2)学生看完之后,完成针对马步问题的一些最简单的习题测试,然后就能看到“马步问题”的项目发布的要求。學生以2人为一个小组,在规定的2—3天内提前完成代码和报告的编写并上传提交[6]。代码由系统随机分配,进行生生评价。
(3)老师通过MOOC平台监督学生自学的情况,并参与作业评价及抽查少许代码,对学生的预习情况有个大致掌握。
(4)在课堂上,老师针对一些重要原理思想或实践中的常见问题做出强调和补充讲解,对算法的升级展开进一步的课堂讨论,比如“在马步问题中采用链栈或者顺序栈各有什么特点或问题、如何避开棋盘上的障碍物、如何走出一条更短的路径、如何找出从A点到B点的所有路径”等有趣的问题。因为针对马步问题和回溯法原理的最基本介绍已经在MOOC中讲解,所以老师可以腾出更多的时间来在课堂上纠正、确认、强化、升华学生的初步理解。
为了避免某些学生在非监督的情况下抄袭他人编码来敷衍作业,系统可针对中小规模的代码引入“抄袭检测判定”的程序。
5 结论(Conclusion)
MOOC的平台和课程建设,都需要大量的资金投入[4]。同时,要想让高校教师放下习惯了多年的教学模式,从根本上脱胎换骨式地采用“MOOC+翻转课堂”的模式,实非易事。从2013年到现在,MOOC虽然已经出现了多年,但仍有一些问题尚未解决。例如:如何让MOOC的管理对教师开放,支持定制化?如何降低普通教师录制MOOC视频的成本?如何将MOOC平台的数据进行分析并快速锁定个性化辅导方向?如何避免教师的敷衍跟风,把枯燥、生硬、“教学生画马”式[3]的讲解视频放在MOOC上,让学生播放3分钟之后就想关掉窗口?MOOC会不会让老师在教学上变得懒惰?
在没有充分解决这些问题之前,MOOC暂时并不具备翻转课堂的实力,只能是传统教学的一个有益补充。翻转课堂和CDIO的实施效果,取决于MOOC平台、教学视频、习题等的质量,也取决于老师对课堂交流和重点难点的准确把握。如何确保学生的学习质量和公平性,老师的投入积极性和公平性等,这是未来需要仔细探讨分析的一个方向。
参考文献(References)
[1] 朱颢东,李红婵.数据结构教学方法和教学手段现代化研究与实践[J].信息化教学,2017,2:122-123.
[2] 刘小飞,李杜蕾,李明杰.应用型本科高校数据结构教学改革初探[J].课程教学,2017,19(7):130-131.
[3] 张铭.立足北大,放眼未来——“数据结构与算法”MOOC课程教学实践与思考[J].工业和信息化教育,2014,9:65-73.
[4] 蒋翀,费洪晓.MOOC与高等教育的融合——基于教师视角[J].长沙民政职业技术学院学报,2015,9(22):127-129.
[5] 蒋翀,费洪晓.MOOC与高等教育的融合——基于学习者视角[J].信息技术与信息化,2015,11:148-150.
[6] 陈军,李亚娟.融合MOOC和CDIO理念的数据结构与算法新型教学模式[J].科技世界,2016,13:111-112.
作者简介:
王 翔(1977-),男,硕士,讲师.研究领域:信息安全,人工智能.