袁友伟,张雪峰,仇 建
(杭州电子科技大学 计算机学院,浙江 杭州 310018)
基于MOOC的C++教学改革
袁友伟,张雪峰,仇建
(杭州电子科技大学 计算机学院,浙江 杭州 310018)
文章针对传统C++教学中存在的问题,结合大型开放式网络课程的特点和优势,提出了基于大型开放式网络课程的线上线下教学相结合的教学改革模式与考核评价体系,颠覆传统的教师讲授的教学模式,把团队合作和师生互动引入课堂,调动学生自主学习的积极性,有助于提高学生对编程语言的学习兴趣和编程能力,是互联网时代对教学模式改革的一次全新的探索。
大型开放式网络课程;C++程序设计;教学改革
随着互联网技术的快速发展,一种新型的教学模式——“互联网+教育”引起了国内外学者的广泛关注,成为了当前教学模式改革领域的研究热点。C++程序设计是一门重要的计算机专业基础课程,通过该课程的学习,学生不仅可以掌握一门高级程序设计语言,全面了解面向对象程序设计的基本概念和方法,也为后续专业课程的学习打下坚实的基础。现如今传统的C++教学问题日益凸显,教学模式陈旧,学生学习兴趣低,达不到应有的教学效果。大型开放式网络课程(MOOC:Massive Open Online Course)有着来自全球顶级的教学资源,课程资源面向大众免费开放,同时提供了自由开放的学习环境,借助于互联网平台,引发了教育模式的变革,为解决传统C++教学中存在的问题提供了一种新的思路。众多学者对MOOC进行了研究,并取得了许多研究成果,浙江大学的李红美等学者进行了MOOC时期高等学校教学新模式探索[1];国防科学技术大学的周丽涛对MOOC在计算机实践教学中的应用进行了探索[2];浙江工业大学的陈晋音等学者则进行C++程序设计课程的翻转课堂教学改革的研究[3];本文在国内外相关教学研究的基础上,结合MOOC具有的教学资源丰富、学习氛围自由、学习成本低等优势,同时引入团队合作、案例驱动教学、反馈教学等元素,并且设计了合理的教学评价体系,形成了一种新型的基于MOOC的教学模式,能够弥补传统教学中存在的重理论轻实践、教学资源陈旧、以教师为中心的缺点,与国外相关计算机教学模式相比,增加了多种教学元素,如反馈教学元素,对学生的学习情况进行跟踪记录,对学习问题和教学问题进分析,改善教学方式,提升教学质量,如增加问题集,对学生的学习问题进行记录,整理成问题集,方便学生了解学习误区以及后续知识点复习,提高教学效果。
目前国内众多高校将C++程序设计作为计算机专业必修课程,该课程不仅是计算机专业的核心基础课程,也是很多学生学习面向对象编程的入门课程,因此该课程具有重要的启蒙作用。C++是一门软件开发语言,在软件行业中具有重要地位。传统C++教学模式存在众多问题:C++语法复杂,涉及的面向对象编程思想抽象难懂,传统的C++教学以课堂理论教学为主,上机实践教学为辅,学生难以真正理解,学习兴趣较低,无法将理论与之实践相结合;当前计算机技术发展迅速,C++程序设计语言标准由C++标准委员会发布,每3年发布新标准,新标准将引入更多的新特性,提高程序开发效率,而当前C++程序设计教材更新速度缓慢,加大学生知识学习难度;C++是一门程序设计语言,需要开发者掌握程序设计思想,具备解决实际问题的能力,但是在传统教学模式中,主要以教师讲解,学生被动接受知识,教师演练,学生模仿,导致学生主动性不足,学习思维固化,动手能力弱。
MOOC,最早可追溯至2007年,由美国犹他州立大学的David Wiley教授和加拿大里贾纳大学的Alec Couros教授发起的两个项目奠定了MOOC的思想和技术基础。此后MOOC引起了广泛关注,国内外众多学者成为了MOOC知识的贡献者以及学习的参与者,MOOC得到了教育领域专家的认可,基于MOOC的教学模式成为了当前研究的热点,虽然MOOC有其独特的优势,但当前基于MOOC的C++教学存在以下问题:1.C++是一门严谨的程序设计语言,拥有众多的语法规则,晦涩难懂,而当前MOOC模式下的C++缺少完整的知识体系,使得学生学习时往往掌握不了要点。2.基于MOOC的C++教学利用MOOC众多的优异的资源,使得学生能够全面学习C++语言知识,但是C++程序设计语言是一门程序开发语言,不仅要求学生掌握基础知识,更要求学生具备解决实际问题的能力,当前基于MOOC的C++教学以MOOC资源教学为主,虽然能够让学生全面掌握基础知识,但是导致学生缺少解决实际问题的能力。3.基于MOOC的C++教学具有入学门槛低,学习者不需要掌握其他知识,但是缺少必要的约束,导致退学率高[4]。4.当前MOOC的C++教学成果考查仍以期末考试为主,缺少科学的考核体系,使得教学成果无法进行科学的评测。
(一)教学模式改革
基于MOOC的C++教学改革模式与传统教学模式最大的不同在于其颠覆性:把以前课前预习,课堂上学习和课后完成作业的教学模式变为课前学生自主预习和自学,课堂上互动式教学,课后在线研讨、完成作业和测试,如图1所示。
1.课前预习和自学
C++程序设计课程有如下特点:概念和语法规则繁多,这些知识点是学习C++的基础知识,没有学习难点,适合学生在线自学完成;实践能力要求高,C++是一门软件开发语言,是当前软件开发行业中主流的开发语言之一,学生不仅需要掌握C++知识,而且需要将理论结合实践,积累软件开发经验。互联网是当前最大的开放式信息资源库,几乎涵盖了当前已知的所有知识点,并且信息更新迅速,学生利用电脑或者移动终端可以解决自己在学习过程中遇到的很多问题,教师可以完善知识体系提升教学质量。在新的教学模式中,课前预习和自习是关键。在课前,教师对课堂知识进行提炼,将课堂知识分解为众多细微的知识点,每个知识点录制讲解视频,并布置知识点习题,做成文档或其他形式的材料,以便学生在线预习。学生自行安排时间观看预习文档和教学视频,完成预习任务,对于预习中遇到的难点问题,学生可以在线讨论,对于重点问题可以向教师反馈,形成重点问题集,以便教师完善课堂教学内容,同时也方便学生进行查漏补缺。
2.课堂互动式教学
在课前预习和自习的环节中,学生根据教师的预习任务完成知识点学习,并对学习中的重难点问题进行反馈,教师依据反馈信息,完善教学视频、梳理知识点脉络,针对上述情况设计课堂教学内容。在互动式课堂教学中,教师主要以引导为主,对学生预习内容进行补充,串联预习知识点,此外教师收集学习难点,对于学生遇到的普遍问题进行统一讲解,学生根据自己在课前学习中遇到的难点问题与教师进行交流,加深知识点理解。在新的教学模式下,学生将进行团队式的学习、讨论与合作:老师根据每堂课的知识点,设计编程案例,学生以团队为单位进行思考、讨论,得到解决方案,必要时也可以对解决方案进行现场展示并与其他团队进行相互评价。老师根据课堂知识点、实际案例和学生展示情况提出具有启发性和创新性的问题,供学生分析讨论,并与老师交流[5]。经过上述教学过程,不仅巩固了学生课前预习的知识点,加深了对知识点的理解,而且培养了学生的计算思维能力,提高了创新能力,同时在案例展示过程中,培养了学生的组织能力,语言表达能力和团队协作能力。
图1 基于MOOC的C++教学模式图
3.课后在线研讨、作业和测试
C++程序设计课程注重实践,因此培养学生的计算思维和编程能力至关重要[6]。学生在课后编程或对课堂上的案例有疑问的地方可以在线与同学和老师进行研讨。由于C++课程内容繁多、语法复杂,课后完成一定量的作业可以有效的巩固本堂课所学知识,作业以程序题为主,采用线上提交的方式。老师可以及时查看学生的作业情况,在线发布作业答案并帮助学生答疑。在课后,老师还可以补充一下计算机或编程方面的最新动态与学习资料,供学生了解技术前沿与开拓视野。期末考核采用线上测试和线下笔试相结合的方式,线上测试主要考察学生的实际编程能力,而线下笔试主要考察学生对知识点的熟悉情况。老师统计学生作业与测试的正确率、成绩等信息,为教学质量的评估和教学方法的改进提供参考依据。
(二)线上线下资源相结合
基于MOOC的C++教学改革中,充分利用线上线下资源是关键,线上线下资源相结合可以充分发挥两者的优势,弥补各自的不足。随着互联网和移动终端的普及,使得学生能便捷地使用线上资源,也为在线讨论、作业、测试等提供了有利的条件。而在新的教学模式中,老师可以充分发挥线下教育的优势,弥补在线教育的不足。线上线下资源的利用如图2所示。
1.线上:老师为学生甄选出优质的MOOC教学视频资源供学生课前预习和自学使用,对于特定内容老师也可以自制教学视频;老师将自制预习文档上传网络,以便学生预习重要知识点,提高预习和自学的效率;充分发挥在线讨论区的作用,供学生进行相互学习和交流,及时向老师反馈学习中遇到的问题;在线提交作业,计算机自动批改,节约老师时间,提高工作效率;线上测试,测试学生实际编程能力,也能帮助学生适应上机考试的环境,为以后计算机等级考试和企业上机测试做好准备;借助后台系统可以方便地统计和处理线上数据,便于老师及时了解学生的学习情况。
2.线下:教师根据线上教学知识点的不足进行补充,串联知识点,帮助学生全面系统地掌握所学知识;团队讨论和合作,与老师互动,解答线上无法解决或无法理解的问题;实际案例展示和实际编程竞赛,弥补在线教学实践环节不足的缺点,提高学生的实际应用能力。
图2 线上线下教育资源综合利用示意图
(三)基于MOOC的C++教学案例设计
C++是一门软件开发语言,注重实践,并且概念和语法规则繁多,传统的以讲师课堂授课为主的教学模式使得学生学习兴趣低,动手操作能力弱,教学效果差。在本小节中,以C++简单程序设计章节为例,详细介绍基于MOOC的C++教学改革案例,展示如何运用MOOC设计课前知识体系、课堂教学、课后知识巩固。
1.课前预习与自习
在课前预习与自习环节中,教师需要对课堂知识进行提取,并将课堂知识分解成一系列细微的知识点,以便学生能够自行学习,以C++简单程序设计章节为例,对该章节知识进行提取分析,将提取出的知识点组建成一颗知识树,如将C++简单程序设计章节分析成三个知识点,这些是学习C++程序设计的基础知识,分别是字符集、关键字和标识符。(1)字符集。字符集是构成C++语言的基本元素。使用C++语言编写程序时,除字符型数据外,其他所有成分都只能由字符集中的字符构成,其中字符集包括三种基本元素:英文字母,A-Z,a-z;数字字符,0-9;特殊字符;(2)关键字。关键字是C++预先声明的单词,它们在程序中有不同的功能。其中关键字包含三种基本元素:数据类型,是C++程序设计语言中预定义的数据的类型,包括整型类型、浮点数类型、字符类型;操作符,是C++程序设计语言中用于控制程序流程,包括操作数值、字符运算;特殊关键字,除上述以外的关键字,具有特定的含义。(3)标识符。标识符是开发者自行定义的变量或常量,用于存储字符或者实数值,代表特定的含义。
上述知识点是C++简单程序设计章节中的主要知识点,将上述知识点组织成一颗知识树,对于每一个知识点,讲师录制10-15分钟视频,讲解知识点要领,帮助学生理解,对于重难点问题,制作PPT文档以帮助学生进一步理解,同时为每一个知识点设置知识点习题,学生在理解的基础上在线演练,加深学生对知识点的理解,对于难点问题,可以在线进行问题反馈,在线系统对学生的习题进行评分,以便教师了解学生的学习情况。
2.课堂互动式教学
在课堂互动教学中,针对课堂知识点安排相关教学活动,将课堂互动教学分为三个部分,分别为:重难点知识详解、提问互动、分组讨论互动。经过上述三个环节,学生将加深对知识点的理解,并且在互动环节中将理论运用实践中,用于解决实际问题,提高学生的动手能力,同时引导学生对知识点进行扩展学习。
(1)重难点知识详解。在课前预习与自习环节中,学生对于难以理解的问题进行在线反馈,教师对学生反馈的问题进行统计,并设置问题集,将新问题加入到问题集中,以便学生后期复习时查漏补缺,加深对问题的理解,并按照问题的普遍程度进行划分,对于普遍问题进行重点分析,帮助学生理解,在该环节中以教师教授为主。
(2)提问互动。在对重难点知识讲解后,需要学生在理解的基础上反馈学习情况,以师生提问互动的形式进行学习情况评定,在此期间教师依据重难点知识进行提问,学生回答,例如float类型包含的字节数,“!、&&、||”之间的优先次序等问题。
(3)分组讨论互动。在上述两个环节的基础上,以案例驱动的方式快速提高学生的动手实践能力。教师依据课堂知识,设计案例,学生自行分组讨论,并将最后讨论结果以小组形式进行成果展示,最后由教师进行点评,分析各个讨论组的优缺点,例如写一个函数,求两个整数之和,要求在函数体内不得使用+、-、x、/四则运算符。
3.课后知识巩固
在上述两个环节中,教师依据课堂知识设计知识学习体系,根据学生学习情况设置课堂教学活动,通过上述两个环节的教学活动,学生基本掌握了课堂知识,具备了将理论结合实际的解题思想。在课后,学生需要对掌握的知识点进行巩固学习,同时引导学生进行知识扩展,将课堂知识运用于实际问题中,动手解决实际问题,加深学生对知识点的理解。
4.考核体系
为了合理地评价学生的学习效果,本文设计了全面的考核体系,考核的各项标准比重如表1所示。
表1 考核体系
如表1所示,对学生学习情况的考核主要由三个部分组成:教师评价、学生评价和期末评价,各个部分的评价标准如下所示:
(1)教师评价:教师评价占总评价的45%,依据教学任务的不同将教师评价分为三大块,分别是:1)课前评价。对学生课前预习任务完成情况进行评分,占总评分的10%,课前预习任务由观看视频和课前预习习题组成,分别为3%和7%;2)课堂评价。对学生在课堂上的学习表现进行评价[7],占总评分的20%,课堂评价由上机测试、出勤、课堂参与度、团队协作能力、项目成果组成,分别为8%、3%、2%、3%、4%;3)课后评价。对学生课后作业完成情况进行评价,主要以课后作业的形式进行评分,占总评分的15%。
(2)学生评价:学生评价占总评分的5%,以学生互评的方式进行评分,在课堂上教师布置项目案例,学生自行分组,最后以团队的形式进行成果展示,团队之间进行成果互评,评价结果作为团对成员的评分。
(3)期末评价:期末评价占总评价的50%,以考试的方式进行评分,对学生的知识掌握情况进行全面测试。
为了科学地评价新教学模式,本文依据两组教学的历史记录数据,对比两种教学模式的优缺点,对比数据如表2所示。
在表2中对两种教学模式下的教学情况进行了对比分析,2014年学生在传统教学模式下的学习情况作为传统教学的历史记录数据,2015年学生在新教学模式下的学习情况作为新教学模式的历史记录数据。从表2中可以看出新教学模式在出勤率、优秀率以及合格率上都有所提升,这说明新的教学模式能够提升学生的学习兴趣,带动整体的学习热情,形成良好的学习氛围,有效地提高了教学效果。
表2 各教学模式的历史记录数据对比分析
本文设计的基于MOOC的C++教学模式取得了良好的效果,但是C++技术革新速度快,这就要求教师保持持续改革精神,保证教学资源的有效性,同时针对实际软件开发的需要,设计具有针对性的软件开发案例,以案例驱动的方式提高学生的学习效率。
基于MOOC的C++教学改革是在互联网时代对传统教学方式的一次革新,MOOC为C++程序设计课程的学习提供了广阔的平台。本文针对C++教学中存在的问题,结合C++程序设计课程的教学特点,充分发挥MOOC等网络资源和平台的优势,有效地提高了学生的学习兴趣与学习效率,同时结合线下教学的优势,进行师生互动和团队讨论交流、展示,实例和编程的训练有助于学生巩固所学知识,也有助于计算思维的培养和编程能力的提高,取得了良好的教学效果。
[1]李红美,陆国栋,张剑平.后MOOC时期高等学校教学新模式探索[J].高等工程教育研究,2014,7(6):58-67.
[2]周丽涛,刘越,彭立宏.探索MOOC在计算机实践教学中的应用[J].计算机工程与科学,2014,36(z1):118-121.
[3]陈晋音,俞山青,毛国红.面向C++程序设计课程的翻转课堂教学改革[J].计算机教育,2015,36(19):39-44.
[4]汪基德,冯莹莹,汪滢.MOOC热背后的冷思考[J].教育研究,2014,9(9):104-111.
[5]吴硕,刘志广,宿艳,等.分析化学“翻转课堂”的尝试与探讨[J].中国大学教学,2015,23(1):53-56.
[6]吴跃,陈峥.面向对象程序设计教改探索[J].计算机教育,2010,17(8):60-63.
[7]孙娜.基于启发式的Visual C++程序设计教学改革[J].计算机教育,2011,13(22):29-32.
On Teaching Reform in C++ Programming Based on MOOC
YUAN You-wei,ZHANG Xue-feng,QIU Jian
(SchoolofComputing,HangzhouDianziUniversity,HangzhouZhejiang310018,China)
Aiming at the problems in the traditional C++ programming teaching and combining with the characteristics and advantages of MOOC, this paper presents a model of teaching reform and an evaluation system in the combination of online and offline based on MOOC that subverts the traditional teaching mode of teachers’ teaching so as to bring the team cooperation and the interaction between teachers and students into the classroom, and mobilizes the enthusiasm of students to study independently.The new teaching model can obviously improve students’ interest in programming language and programming ability and is a new exploration into the reform of teaching mode in the internet age.
MOOC;C++ programming;teaching reform
10.13954/j.cnki.hduss.2016.04.012
2016-01-13
浙江省教育科学规划项目(2015SCG006);杭州电子科技大学高教研究课题(YB201525)
袁友伟(1966-),男,湖北潜江人,教授,智能计算、大数据分析.
G643.2
B
1001-9146(2016)04-0064-06