结合慕课的C++程序设计课程教学改革探索
2017-03-21王国强阚红星杨松涛金力
王国强+阚红星+杨松涛+金力
摘要:针对实际教学过程中发现的一些问题,结合医药软件开发专业的特点,提出了一种结合慕课的C++程序设计课程教学模式。并分别从课前自学慕课的设计、课堂理论教学的设计、课堂实验教学的设计和课程考核方式的设计等方面进行了详细的阐述。
关键词:慕课;C++程序设计课程;教学改革
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2016)33-0144-03
Abstract: Aiming at some problems in the actual teaching process and the characteristics of medical software development specialty, a teaching mode of C++ programming course combined with MOOC is proposed, which is described in detail from the aspects of the design of self - learning MOOC before class, the design of theory teaching, the design of experimental teaching and the design of course assessment method.
Key words: MOOC; C++ Programming Course; Teaching reform
1 引言
《C++程序设计》是高级语言程序设计的一个入门课程,也是安徽中医药大学的医药软件开发专业本科生的一门必修的基础课程。这门课的教学目标是使学生掌握C++程序设计语言的基本语法、掌握面向对象程序设计的基本概念,学会使用C++程序的集成开发环境,并为后续的专业课程学习打下坚实的基础。
传统的C++程序设计课程教学存在着重理论轻实践、学生学习兴趣不高、学生动手能力弱等突出问题,急需一种新的教学模式来提高教学效果。慕课(Massive Open Online Course, MOOC)是最近兴起的一种新的教学模式,具有很多优点,结合慕课进行混合式教学可以很好地解决学生被动听课、学生对课堂教学内容理解不透彻、课堂课时不够等问题[1],也为C++程序设计课程的教学改革提供了一种新的思路。
2 研究背景
2007年,美国犹他州立大学的David Wiley教授和加拿大里贾纳大学的Alee Couros教授分别首次提出了慕课的概念,此后基于慕课的教学改革和教学模式引起了国内外学者的广泛关注[2]。2012年是慕课快速发展的一年,目前著名的三大慕课平台Udacity、Coursera和edX都在这一年被搭建起来;从2013年开始,国内的北京大学、清华大学、香港中文大学也陆续加盟这三大慕课平台,并积极开展对基于慕课的教育模式的研究[3]。
相比于传统的教育模式,基于慕课的新型教育模式具有很多的优点,比如:学习者可以自由选择学习的时间和地点[1];学生有不理解的知识点可以随时复习之前的慕课,相当于接受了老师的单独辅导[1];慕课打破了教育的壁垒,使得教育更加公平、公开,任何人都能获得世界上最好的教育[4];慕课教育几乎可以完成传统教育的一切内容:授课、作业、考试、颁发证书等[4]。不过,单一的慕课教育模式也存在着一些不足,比如:培养出来的学生只追求肤浅的、通用的知识;因为可以多次重修一门课程,学生缺乏动力和压力等[4]。而将传统的课堂教学和慕课相结合的混合式教学模式既可以充分发挥慕课教育的优势,并可以很好地弥补单一慕课教育方式的不足。
C++程序设计课程是一门学习者众多、实用性强的计算机程序设计语言课程,由于此课程的各个知识点相对独立和完整,因此非常适合使用慕课的教学方式[4]。目前,针对C++程序设计课程的慕课教学模式的研究还比较少。其中,文献[1]从需求和定位、知识点划分、呈现形式等方面介绍了清华大学“C++语言程序设计”慕课[5]的设计。文献[6]从讲课视频的形式和拍摄场所、录制脚本设计、拍摄中的问题、视频后期制作、其他课程资源建设等方面介绍了清华大学“C++语言程序设计”慕课[5]的拍摄与制作。文献[2]从课前预习和自学、课堂互动式教学、课后在线研讨、作业和测试等方面介绍了一种基于慕课的C++教学改革模式。文献[7]从教学方法、教学模式和综合评价机制等方面介绍了一种慕课教学环境下的C++程序设计课程的翻转课堂教学改革模式。
本文在上述教学研究的基础上,结合安徽中医药大学医药软件开发专业的特点和学生的具体情况,提出了一种新型的结合慕课的C++程序设计课程教学模式。
3 结合慕课的C++程序设计课程教学模式
本文提出的结合慕课的C++程序设计课程教学模式的框架如图1所示,其中,主要通过课前自学慕课、课堂理论教学、课堂实验教学、课程考核方式四个方面来实现。
3.1 课前自学慕课的设计
首先,将原来以2个学时为单位的课堂教学内容按照知识点划分为多个小片段,并制作成慕课,以供学生在课堂教学之前自主学习。每个慕课控制在5~10分钟,因为学生在没有班级同学陪伴的情况下独立学习慕课时,很难长时间集中精力[1]。例如在设计“类的构造函数与析构函数”这一章节[8]的慕課内容时,可以将其划分为以下七个知识点:构造函数的作用和定义、带参数的构造函数、用参数初始化表对数据成员初始化、构造函数的重载、带默认参数的构造函数、析构函数、构造函数和析构函数的调用顺序,并分别制作成七个慕课。
其次,针对每个慕课设计相应的在线思考题,以引导学生在学习慕课时主动思考并提高学习效果。例如可以为“类的构造函数与析构函数”这一章节的慕课内容设计如下思考题:①类的构造函数和其它成员函数的差异有哪些?②使用带参数的构造函数的目的是什么?③用参数初始化表对数据成员初始化有什么好处?④构造函数的重载和一般函数的重载有什么不同之处?⑤全部是默认参数的构造函数与重载构造函数能否共存?如果不能,原因是什么?⑥类的析构函数能否被重载?如果不能,原因是什么?⑦调用构造函数和析构函数的顺序是相反还是相同?
同时,为每个慕课设计相应的在线测试题,以帮助学生复习和巩固学习内容,并帮助老师了解和验证学生学习慕课的效果。在线测试题可以分为两种形式:针对每个知识点的选择题和填空题,并要求在线提交,然后由系统自动打分。为了避免学生之间相互抄袭,可以将在线测试题设计为一个题库,每个学生进行测试时随机生成测试题,并且只允许进行一次测试和限制在规定的测试时间内完成。
另外,设置在线讨论区,允许学生在线提问、讨论和老师答疑。为了提高讨论的效果,可以按照知识点来划分讨论区,以方便对同一个知识点有疑问的同学一起讨论[1]。
3.2 课堂理论教学的设计
目前的课堂理论教学过程中主要存在以下问题:①过分注重语法规则的讲解,缺乏对学生解决实际工程问题能力的培养;②基本上仍是填鸭式教学,让学生感觉枯燥乏味。针对上述问题并结合慕课,我们重新设计了课堂理论教学,具体如下所示:
首先,老师根据学生课前自学慕课的测试结果、在线讨论区所反馈的普遍问题、以往的教学经验等进行重难点的详解。例如,在课堂上讲解“类的构造函数与析构函数”这一章节的内容时,需要详细阐述以下几个重难点:①构造函数的作用:处理对象的初始化;可以对比之前使用一般成员函数来初始化对象数据成员的方式,让学生直观感受到使用构造函数的便捷。②构造函数与一般成员函数的区别:构造函数的名字必须与类名完全相同,构造函数没有返回值,构造函数不需用户调用也不能被用户调用。③带参数的构造函数的作用:对同一个类的不同对象赋予不同的初值。④用参数初始化表对数据成员初始化的好处:方便、简练,尤其当需要初始化的数据成员较多时更显其优越性。⑤默认参数的构造函数的好处:提供了建立对象时的多种选择,它的作用相当于好几个重载的构造函数;即使在调用构造函数时没有提供实参值也不会出错,而且还确保按照默认的参数值对对象进行初始化。⑥析构函数与一般成员函数的区别:不返回任何值,没有函数类型,也没有函数参数,因此它不能被重载,同时不需用户调用也不能被用户调用。
其次,老师回答学生的提问,并进行启发式的提问请学生来回答,这样既加深了学生对知识点的理解,也带动了学生的积极性,提高了学生的兴趣,也锻炼了学生的语言表达能力。
最后,采用案例教学法,选取和学生的专业相关的合适的案例进行分析和讲解,以培养学生解决实际工程中问题的能力。比如:针对医药软件开发专业的学生,可以用医院信息管理系统的设计与开发作为案例,给学生进行讲解。
3.3 课堂实验教学的设计
目前的课堂实验教学过程中主要存在以下问题:①大部分学生满足于完成老师布置的实验任务,自觉深入思考的兴趣不大,自主学习的热情不高。②部分学生懒惰、缺乏学习动力,使用U盘拷贝其他同学程序的现象比较多。③对学生的工程设计能力的训练比较少。针对上述问题,我们采取了如下措施:
1)第一堂实验课很重要,要让所有学生都有成就感。因此,选择一个简单的题目,先演示给学生看,然后监督学生上机模仿练习,并逐一检查,直到每个学生都运行成功为止。
2)禁止在机房使用U盘,机房中的计算机不能上网,计算机与计算机之间不能共享,从而避免学生之间的相互抄袭。
3)每个学生固定一个机位,构建服务器,每个机位对应服务器中的一个学生文件夹,每个学生用的计算机只能向服务器上传或下载自己的文件夹。每次实验课结束之后,自动上传到服务器的相应学生文件夹,然后系统自动评分,并且不允许下次再修改。
4)每堂实验课设计多道题目,难度逐渐增加,好处是:让能力强的学生不会无事可做,可以主动学习更难的内容;减少学生的懒惰心理,避免依赖其它同学;能够真实反映每位学生的实际动手能力,对学生的实验成绩的打分更加公平、公正和公开。
5)设计和学生专业和实际工程相关的综合大作业,由3~5人组成一个小组利用课余时间协作完成,考核方式为课堂演示和答辩,自主选择其中1人担任组长参与答辩,以项目的完成程度、答辩PPT的制作、口头表达能力、回答老師提问的准确程度等来打分,再由组长给每个组员打分并分配一定的权重。这样的综合大作业可以很好地锻炼学生的团队协作能力、组织能力和口头表达能力。
3.4 课程考核方式的设计
目前的课程考核方式主要存在以下问题:过分注重学生对理论知识掌握程度的考核,对学生实践能力的考核不足;考试成绩高的学生,动手能力却差等。针对上述问题并结合慕课,我们设计了一种多元考核方式,以全面考核学生的多种能力和合理评价学生的学习效果。具体的考核指标的比重和内容如表1所示,主要由以下五个部分组成:
1)课前慕课自学的考核:主要考核学生的自学能力,比重为10%。主要包括观看慕课次数、慕课测试的结果和答题时间长短、在线讨论区中的提问和回答情况等。
2)课堂理论学习的考核:主要考核学生的理论课堂表现,比重为10%。包括出勤率、课堂提问次数、课堂回答问题的次数和准确度等。
3)课堂实验操作的考核:主要考核学生的基本动手能力,比重为15%。进行实验打分时,不仅要考虑程序是否运行通过、运行结果是否正确,还要考查程序编写的规范性、可读性和健壮性。
4)综合大作业的考核:主要考核学生的工程设计能力和综合能力,比重为15%。学生进行综合大作业的答辩时,除了老师提问以外,也让台下的同学们自由提问,由团队成员来回答,根据制作答辩PPT的质量、每个成员的临场应变能力和口头表达能力,以及回答问题的准确性来评分。
5)期末考试的考核:主要考核学生对基本概念和理论知识的掌握能力,比重为50%。
4 结论
本文针对目前C++程序设计课程教学过程中存在的突出问题,提出了一种结合慕课的C++程序设计课程的新型教学模式。通过这样的教学改革,可以充分发挥互联网时代网络资源的优势,提高学生的学习兴趣,锻炼学生的自学能力、动手能力、工程设计能力、团队协作能力和口头表达能力,从而取得更好的教学效果。
参考文献:
[1] 郑莉. “C++语言程序设计”慕课的设计[J]. 计算机教育,2015(23):120-122.
[2] 袁友伟,张雪峰,仇建. 基于MOOC的C++教学改革[J]. 杭州电子科技大学学报(社会科学版),2016(4):64-69.
[3] 叶从欢,王光伟,黄兰英,等. 面向程序设计课程的Mooc教学模式研究[J]. 科技视界,2015(36):80+138.
[4] 王之元,易晓东,李姗姗,等. 面向MOOC的程序设计语言课程教学设计[J]. 计算机教育,2014(2):55-58.
[5] 郑莉. C++语言程序设计 - 郑莉 - 清华大学 - 顶你学堂 - 中文慕课(MOOC)平台[EB/OL]. http://www.topu.com/mooc/3704, 2016-10-20.
[6] 郑莉. “C++语言程序设计”慕课拍摄与制作[J]. 计算机教育,2016(2):178-182.
[7] 陈晋音,俞山青,毛国红. 面向C++程序设计课程的翻转课堂教学改革[J]. 计算机教育,2015(19):39-44.
[8] 谭浩强. C++面向对象程序设计[M]. 2版.清华大学出版社, 2014: 68-81.