赖晓燕, 赵浩, 刘永芬, 程铃钫
(福建农林大学金山学院, 信息与机电工程系, 福建, 福州 350002)
“程序设计基础(C语言)”是计算机科学与技术专业核心课程之一,也是第一门程序设计课程,主要讲授计算机问题求解的基本思想和过程以及C语言基本知识。作为程序设计入门课程,本课程的主要目标是:通过该课程的学习,学生能掌握计算机问题求解的常用方法,具备用C语言编程求解实际问题的能力,让学生喜欢上编程,为专业学习打下基础。然而,经过一个学期的学习后,多数学生表示不会编程,实际教学效果与预期的目标存在一定的差距,通过分析程序设计类课程教学,发现存在如下几方面共性问题。
(1) 课堂教学以教师为主导,教师“一言堂”,学生被动听课,课堂互动极少,学生不具备自主学习能力,缺乏自主探究的精神[1]。
(2) 因学时所限,课堂教学主要用于讲解语句语法,案例设计多以说明、验证语句语法为主,学生重心放在熟记语句语法上,容易觉得枯燥乏味,不能体会到编程的乐趣,无法调动学生的积极性。
(3) 程序设计类课程对实践要求较高,代码是看不会的,只有熟能生巧,但学生编程训练主要依靠上机课,实践严重不足,总体来看,大学四年编写的代码量太少。
(4) 考试以期末纸质考试为主,不注重过程性考核。纸质考试无法测试学生的程序设计能力,导致虽然高分但是不会编程的现象屡有发生,且阶段性考核少,部分学生通过考前突击就能及格。
基于上述分析,开展“程序设计基础”课程教学改革势在必行。如何改?信息技术与教育教学的深度融合为程序设计类课程教学改革带来新的契机。当下,各种MOOC平台风起云涌,线上课程数量快速增长,助推混合式教学的快速发展及普及。在“互联网+”时代背景下,如何发挥混合式教学模式优势,调动学生的主观能动性,激发学生的学习兴趣,促进学生自主学习,是当前值得深入探讨的重要课题,也是应对上述问题的有效途径之一。本研究围绕“程序设计基础”课程的目标,聚焦于培养学生问题求解能力,依托中国大学MOOC平台的优质MOOC课程,开展混合式教学实践,将知识传授的部分前移至课前;课堂主要用于求解问题,以学生为主体,教师为主导,开展生生、师生讨论,深化知识;课后学生采用自动测评系统进行自主自助式编程训练,通过代码量的不断积累,逐步培养学生程序设计能力;注重过程性考核,引导学生坚持课外学习,培养自主学习能力。
混合式教学是融合线上教学与传统课堂教学两者优势的教学模式。建构主义理论为混合式教学的形成和发展奠定了坚实的基础[2]。建构主义理论认为知识的获取是个体通过学习环境对新知识进行有意义的建构获得的[3],在了解和理解新知识后,学习个体需要经历知识建构及运用新知识的过程,才能真正掌握知识[4]。因此,教学不是仅仅靠老师单向传授就可以完成的,关键还在于学生能够主动学习、应用新知识,进而实现学生对新旧知识的自我融合,这就是为什么传统课堂先教后学,以教师为主导、教师满堂灌的教学方式的教学效果不佳的原因。基于MOOC+SPOC的程序设计基础课程混合式教学,遵从学生的认知发展规律,利用在线平台、慕课堂、QQ群等创设学习环境,课堂教学活动以学生为主体,教师转变角色,通过交互帮助学生进行知识探索及知识建构。
戴维·梅丽尔(David Merrill)提出的首要教学原理为混合式教学的具体实施提供指导。首要教学原理包括五个核心要素:解决实际问题、激活旧知识、演示新知识、应用新知识、整合知识[5]。首要教学原理提倡以学生为中心,相较于教师的教,更关注学生的学,强调教学活动应该从学生需求出发,重视培养学生的主动学习能力。课前通过激活旧知识、演示新知识、应用新知识等环节,引导学生在线上进行有效的自主学习;课中,聚焦问题解决,引入实际问题,通过了解新知识、应用新知识来解决实际问题,促进学生新旧知识的融合,逐步培养学生问题解决能力;课后,学生完成一定数量的编程题、通过参加竞赛等方式,进一步整合知识。
根据“程序设计基础”课程特点,以“激发兴趣、促进自主学习、培养问题求解能力”为目标,笔者设计了线上线下相结合的混合式教学模式,如图1所示。该模式可以分成课前、课中、课后3个阶段。课前阶段,在导学任务单指导下,学生在MOOC平台,学习视频(激活旧知识、演示新知识)、参与讨论(应用新知识)、完成测验(应用新知识),完成知识的学习认知和理解;教师则跟进学生的学习,并对学生的学习进行积极有效的指导,包括设计导学任务单、答疑解惑、监控学习数据等。课中阶段,即线下课堂,包括理论课和上机课,其中,理论课聚焦实际问题求解,包括激活新知识和应用新知识,具体包括测验、重难点解析、课堂讨论、现场编程等教学环节,学生作为主角,参与各个环节,教师则精心设计各个环节,重在激发学生学习热情,帮助学生进行知识的深化;上机课,基于自动测评系统,学生进行编程实践,培养分析问题、建立模型、编码、调试及运行程序的能力;教师则设计结合实际兼具趣味性的题目。课后阶段,主要进行知识应用,整合知识,学生借助自动测评系统进行自主编程实践,也可在PTA平台(程序设计类实验辅助教学平台)进行编程实践。通过强化训练及参加团体程序设计天梯赛、蓝桥杯等程序设计类竞赛,进一步培养学生的自主学习能力和编程能力;教师则通过定期发布成绩、进行程序设计选拔、开展程序设计集训班等方式,督促学生进行课外训练、培养和提升学生的程序设计能力,帮助学生完成知识的升华。
图1 混合式教学模式
考试是指挥棒,老师怎么考,学生就怎么学。为了激励学生积极、持续参与学习,混合式教学模式下的学生评价应覆盖课前、课中、课后各个阶段,线上与线下考核相结合的方式进行。因此,改变以往“程序设计基础”课程以期末纸质试卷为主的考核方式,将形成性评价与终结性评价相结合,形成性评价包括MOOC/SPOC成绩、上机成绩、测验成绩等;为了更好引导学生进行编程实践,终结性评价采取机考编程题的形式进行。
实践是检验真理的唯一标准。笔者在计算机科学与技术专业开展了“程序设计基础”课程的MOOC+SPOC混合式教学实践,收到了良好的效果。
经过比较,确定以中国大学MOOC平台为学生自主学习的平台,选用哈尔滨工业大学苏小红教授团队建设的“程序设计基础”及“C语言程序设计精髓”两门慕课作为学生线上学习课程,这两门课程都是国家精品在线开放课程,到目前为止已经开课多轮,具有教师团队人数多,选课人数多,线上讨论氛围浓厚,答疑及时,选择题题库丰富,编程题与实际生活结合紧密等特点,适合学生进行自主学习。其中,第一门慕课侧重介绍计算机问题求解的基本方法,学时较少,通俗易懂,学生可以零基础学习,采用MOOC形式;第二门慕课侧重用C语言实现基本思想,依托本门慕课,建立异步SPOC课程。为引导学生有效地进行线上自主学习,教师提前设计好导学任务单,提前一周发布。
以数组这章为例,具体的实施过程如下。
课前,学生进行线上自主学习,完成知识的认知和理解。学生根据任务单,如表1所示,在MOOC平台学习视频内容、完成5道选择题、4题必做编程题,在学习过程中,学生可以随时与MOOC教师、MOOC学员、SPOC教师进行交流,学生可以根据自身基础决定是否做更多的编程题。
表1 “数组”线上学习任务单
课中,线下理论课堂,要求学生上课带电脑,重在激发学习兴趣,师生一同解决实际问题。第一步,为检验学生线上自主学习情况,安排随堂测验,及时了解学习情况。第二步,根据SPOC学习数据分析及测验情况,教师讲解重点和难点,组织学生进行案例讨论,鼓励学生积极发言,案例选取兼具有趣和有用,找到学生的兴趣点,吸引学生的课堂注意力。例如,在数组这章选取了字符串回文、斐波那契数列、选票统计、设计魔方阵、打鱼晒网等问题。第三步,以学生编程为主,学生结队编程,鼓励大家积极交流解题思路,一题多解,经过思维碰撞,形成对问题的多元视角。线下上机课,学生进行编程训练,编程题包括基础题、提高题、进阶题,学生可以根据自身情况完成相应题目,采用自动测评系统,可以实时评分及排名,某次实时测评结果如图2所示,教师及时将测评结果及排名情况发给学生,鼓励学生根据测评情况自主查找错误。
图2 某次上机课实时测评情况
课后,利用自主开发的测评系统,学生可以进行自助式编程训练,采用该测评小软件,学生无需网络即可进行测评。学有余力的学生,可以在PTA平台完成更多的编程训练。任课教师要营造编程无处不在的氛围,提供学生能够进行自主练习的平台。同时,应积极鼓励学生参加各类程序设计类竞赛,在与其他学校同台较量的过程中,不断提升。
在混合式教学模式下,“程序设计基础”课程成绩评定办法如表2所示。
表2 成绩评定办法
自2018年9月开始,笔者在计算机科学与技术专业开展“程序设计基础”课程的混合式教学尝试,经过三年的实践发现,采用混合式教学后学生的成绩逐年提高,将2018级、2019级、2020级计算机专业的“程序设计基础”课程期末成绩进行对比,结果如图4所示,从图中可见及格率、平均分均有提高。
图3 三届计算机学生程序设计基础期末成绩对比
近三年,学生在天梯赛等程序设计类竞赛中获得省级及以上奖励35项,其中,一年级参赛人数大幅提升,其获奖的比率以近30%幅度提升。由此可见,基于MOOC+SPOC的程序设计基础课程的混合式教学模式有助于提升教学效果。
围绕“程序设计基础”课程教学目标,基于MOOC+SPOC的混合式教学模式,本文构建了课前自主学习、课中问题求解、课后自助式训练的完整教学链条,师生达成了学习共同体,以学生为主体,教师为主导,教师转变角色,引导、督促、帮助学生学习。通过混合式教学实践表明,与传统课堂相比,混合式教学在调动学生主观能动性、培养学生自主学习能力,以及培养问题求解能力方面发挥了更积极的作用。