基于结对编程的翻转课堂教学模式探索
2018-06-26
(安徽大学计算机科学与技术学院,安徽 合肥230601)
《汇编语言程序设计》作为计算机科学与技术专业的核心基础课程,综合了计算机硬件和软件技术,具有很强的系统性,是培养学生专业技能水平的重要课程[1]。近年来,为了提高教学质量,激发学生学习兴趣,我们尝试使用了“互动式编程”教学法进行授课,具体为:教师首先通过一个简短的实践编程练习来引入新的课程内容,在此基础上,通过扩展练习,强化所学知识。然后,教师继续下一个知识点,循环重复。为了帮助学生构建不同知识点间的关联,在课后,通常会安排一些具有一定综合性的编程练习作业,教师将会根据学生的反馈,在课堂上有针对性地进行补缺补差。虽然这种互动式教学法比传统的填鸭式教学法更为有效,但仍存在一些问题。比如:在最初的几次理论课中,如果有的学生无法理解一些基础概念,他们将难以顺利完成随后的编程练习。对这些学生来说,这门课很快就陷入了一种恶性循环:脱节——表现不佳——缺乏自信——进一步脱节。
为了能够增强学生对课程内容的参与度,提高学生的学习主动性,早在2000年,Lage等人就提出了“翻转课堂”的概念[2];2012 年,Bergmann 等人将这一概念成功应用到化学教学中[3]。目前,随着基于网络授课技术的成功开展,翻转课堂教学模式在北美的教育机构中获得了广泛的关注,且涵盖了不同学科与不同教学对象。教学实践验证,采用了这种教学模式的班级具有失败率低、教学手段灵活、学生学习效果好等优点。因此,翻转课堂教学模式已经成为教育技术领域的一个主要趋势[4]。本文中,作者根据《汇编语言程序设计》课程特点,结合多年教学经验,提出了基于结对编程的翻转课堂教学模式。
一、结对编程翻转课堂的概念
在传统的以教师为中心的课堂上,普遍采用的是“传递→接受→模仿”教学模式。该模式通常采用理论讲授、课后作业、编程练习及综合实践等环节实施教学,其优点是教师可以较好地把握教学过程的组织、问题的解决及进度控制等,便于在实验教学中发挥教师的主导作用。然而,该模式却降低了学生在教学实施过程中的认知主体地位,遏制了其主观能动性与创造性的发挥[5]。因此,传统教学模式所带来的弊端是:逐步养成学生的思维惰性,使其形成对教科书与教师讲授内容的盲目“崇拜”,严重阻碍了他们发散思维与逆向思维的训练。相较于传统教学模式,在翻转课堂上,教学实施步骤发生了较大改变,两者的主要区别如图1所示。
图1 传统教学模式与基于结对编程的翻转课堂模式区别示意图
在结对编程翻转课堂教学模式下,教师在课前以预先录制的视频的形式“讲授”课程,并把课堂的时间花在让学生参与涉及协作和互动的主动学习活动上,即传统被动授课被推到课外,在课堂上通过结对编程实现学生的主动学习活动。所谓“结对编程”是指两位程序员结成一互助对,一人输入代码,一人口述程序,两人使用同一台电脑进行编程。结对编程最大的优点是可以促进参与项目的程序员水平的快速提高。两名程序员在进行程序编写的时候,水平较低的一方能够在水平略高的程序员影响下,潜移默化地学到一些新的知识与技术;同时,水平高的一方也同样因为不断地把自己的想法说出来而理清了自己的思路。
二、教学实施过程
(一)课前准备
作为课前教学的主要实施内容,我们预先录制了视频讲座。该视频按教学进度一共包含了18个子视频(授课内容如表1所示),每个子视频的时间约为90分钟,主要包括理论的讲解、代码的分析、示例程序的编译和执行等,所有视频上传到学校网站,学生可以自由地进行在线学习。
表1 预先录制视频主要授课内容
同时,我们为每个视频都准备了相应的自测题,这些自测题包括5个选择题,5个填空题及5个判断题。在学生进行完视频学习之后,这些自测题被用来进行学习效果的评估。学生的测试结果将被记录并发送到教师客户端,以便教师对学习情况进行总体的把握。如果学生对测试结果不满意,可以重新观看视频并进行测试,新的测试结果将会覆盖老的测试结果。
(二)课堂实施
每次课的前15分钟被用来对课前视频内容进行复习,教师的主要任务分为两部分:一是提纲挈领地对本次课的教学内容进行说明,讲解重、难点问题及编程时可能面临的一些问题,并提供一些解决方案;二是根据学生观看视频时的自测试结果,对普遍存在的一些理论问题进行讲解,分析产生错误的原因。这一环节是结对编程的基础,具体实施时间将根据学生的反应进行动态调整。
随后,以结对编程为课堂主动学习活动的具体实施方式,时间大约为60分钟。结对编程是对初学者非常有效的一种学习方式,同时也是一个积极合作的学习过程,已经获得专业人士的认可和推荐。在具体实施中,两个学生共同使用一台电脑,他们其中的一个负责代码的输入(即“操作者”),另一个口述代码(被称为“导航器”)。编程过程中,两人要进行不间断的交流,程序的设计方案由“导航器”主导,该学生只进行口述而不实际输入代码;键盘操作则由“操作者”实现。由于人的思维速度是高于代码的输入速度,因此,在“操作者”进行代码输入的同时,“导航器”不仅可以检查代码是否准确,还可以有空闲时间做额外的思考,如:代码效率、程序框架的优化等。反过来,作为新手的“操作者”在输入代码的同时也在进行着学习,其编程水平将会在“导航器”的影响下潜移默化地提高着。另外,在课堂中,“操作者”与“导航器”的选择是随机的,这样学生们可以接触到更多的同学和编程风格。在编程对象上,每次课我们会依据教学大纲要求,将先前使用的课堂编程练习和课后作业进行整合,形成具有一定综合性与难度的结对编程训练集。这一环节中,教师的主要任务是回答学生在编程中所遇到的问题,同时对学生的程序框架进行指导。
结对编程结束后,会组织一个15分钟左右的互动交流环节,让每组学生说明实验结果与所遇到的问题及解决办法。不同组的学生可以对所遇到的问题提出不同的解决方案,也可以阐述自己在程序设计中的心得体会。教师在这一环节中的主要任务是针对学生的发言进行点评,纠正一些错误的编程习惯,对一些好的设计思路进行肯定。该环节虽然时间不长,但却是对结对编程效果的升华,学生通过前期编程时的思考、同学间的交流及教师的点评,对所学内容将会产生更深刻的理解与认识。
(三)课后任务
每一次课结束的时候,教师则会安排下一次课的视频讲座学习任务。学生们被要求在规定的时间内完成指定视频的学习与自测试。为了保证学习效果,学生们被要求要记下观看视频时出现的问题,同时,未能按时提交自测题的学生,在课程开始的时候将会受到教师的警告,并以降低他们课堂参与分数作为惩罚。
(四)考核评估
考核主要由两部分组成:笔试测试和编程测试。其中,笔试测试占30%,编程测试占40%,两者总和占学生最后成绩的70%。平时测试题的成绩、课前复问成绩、课堂参与度等占30%。
三、教学特点分析
(一)学生具有很高的参与热情。在新的教学模式实施过程中,笔者观察到在结对编程中学生的参与度非常高。学生们在一起研究教师所布置的任务之后,他们将会进行充分的讨论。当编程遇到困难时,他们会主动和其它同学或教师进行沟通。在以前的教学中,学生们不愿意、也不情愿就编程问题向其它同学寻求帮助,生怕别人嘲笑,而在结对编程的教学模式下,不同小组之间引入了竞争氛围,学生们为了取得理想的编程效果,当他们遇到问题时,更愿意寻求他人帮助。随着课程的深入,同学关系通过这种练习更加巩固,配合也更加密切,逐步形成了一个团结向上的学习群体,营造出了良好的学习氛围。
(二)学生的自信心得到了提高。由于视频授课的灵活性,使得学生们在学习方法上发生了变化:学生们更倾向于自主学习。在之前的教学班级中,一些基础较弱的学生因为无法理解教师课堂上讲授的内容而难以顺利完成之后的编程练习,久而久之,这些学生因为“自卑”而不愿意与教师或其它同学进行沟通,自信心受到了很大的打击。而在翻转课堂中,这些学生通过课前的努力,有机会像其他优秀的同学一样做好上课的准备,因此他们有信心解决在组队编程期间遇到的问题。在实施过程中,我们发现,有些成绩相对较差的学生在程序编写速度、错误的判断及所展现出的求知欲超出了教师的意料,学生的自信心得到了空前的提升。
(三)提升了团队合作精神。结对编程在课堂上的使用,使得学生之间随时、随地开展合作成为可能。传统教学中,学生们在课堂上的任务主要是认真听取教师的讲授,而课下合作的意识也不是十分强烈。而在结对编程的翻转课堂的模式中,为了解决一些问题,同一组两个不同的学生间或不同组之间的沟通需求变得越来越强烈。这种合作模式促进了学生们深入理解、运用所学知识的能力;同时,共同的目标、共同的努力以及成功所带来的满足感将会深化学生对开展团队合作重要性的认识,对于培养学生良好的协作精神与沟通协调能力具有重要的推动作用。
(四)促进学生创新能力的提升。结对编程的翻转课堂教学通过改变“教”与“学”在教学过程中的比重,强调学生的认知主体地位,注重“自主获取、自主探索、自主发现”能力的锻炼,通过学生与教师、学生与学生间的交流互动,将会有力促进学生创造与创新性思维的发展。
四、实施过程中可能会面临的一些问题
(一)对任课教师提出了更高的要求。翻转课堂顺利实施的前提是课前为学生准备丰富教学素材,因此,教师需要花费大量的时间与精力去准备视频和课堂资料,这无疑增加了教师的备课负担。另外,为了保证教学效果,大多数学生在进行团队编程时需要教师的密切监控和监督,因此,教师必须确保团队在结对编程会话中要按预先设定的规则与目标去执行编程工作。有些个性较强的学生会忽略小组的另外一名成员,而进行独立代码编写,这种情况下,教师应立即进行干预才会起到真正的教学效果,这同样也增加了教师在课堂上的教学压力。另一方面,在课程开始前,如果学生没有观看视频或做其它相关课程准备,编程教学将会很难实施。为了避免这种可能发生的情况,我们在视频后专门设置了自测试环节,然而,这种做法依然难以从根本上解决这一问题。我们通过对学生的调查发现,实施结对编程的翻转教学中最大的障碍是心理上的问题:将传统授课模式转换成翻转课堂授课模式做法本身就是一种新的挑战,而这种挑战必然带来学生甚至包括部分教师在内的教学要素的变革,这种变革会使得大家本能地产生一些抵触情绪。因此,如何提高对翻转课堂有益性的认识并获得大家的认可,也是任课教师需认真考虑的一项长期工作。
(二)学生的理论学习难度增加。在传统的课堂讲授式授课模式中,由于教师与学生面对面,因此,在讲授过程中,当学生发现问题时,可以及时反馈给教师,而教师也可以有针对性地进行解答。在翻转课堂中,基础理论学习是通过视频完成的,当学生在学习过程中碰到问题时,往往不能及时解决。随着时间的推移,学生们解决问题的愿望也会变得越来越弱,甚至不再想解决。为了改变这种状况,有的学生提出希望教师能够提供视频讲座中使用的补充材料,如源代码和幻灯片等,我们认为这确实是一种很好的方案。另一个建议是把每个视频的长度限制在10分钟以内,同时配以更加精简的学习目标,让学生学习的目的性更强。虽然上述方法可以在一定程度上缓解学生学习压力,但难以从根本上解决问题。因此,寻找一种更有效的实时解决问题的方式,降低学生的学习难度是一件值得深思的事情。
(三)课堂组织形式需多样化。目前,课堂主要以结对编程为主要实施形式,课程后期,当有些学生的新鲜感消失时,他们对课程的参与度明显下降,表现为:编程效率不高、沟通交流减少、对错误发现速度变慢等。为了改变这一情况,保持课堂组织形式的多样化将有利于提高学生的学习兴趣。首先,在编程的难度上要逐渐提高。随着学生掌握的知识越来越多,基础越来越扎实,一些简单的程序对他们已经没有太大的挑战性,因而,很容易滋生骄傲情绪。逐渐加大编程难度与综合度,让学生不停地去发现并解决一些新的问题,这将有利于调动学习积极性与主动性,培养创新能力。另外,可以在结对编程的基础上,适当地开展一些编程竞赛和小游戏,对于促进学生间的协作,提高学习兴趣也是一种可行的尝试。
五、结语
基于结对编程的翻转课堂教学模式对传统《汇编语言程序设计》课程教学提出了一种新的思路。课程视频不仅可以使学生充分地准备课堂内容,教师在课堂授课重心的改变意味着他们有额外的时间给学生开展更有用、更有吸引力的学习活动;而且还可以使那些基础较弱但勤奋的学生能够以自己的方式进行学习,使他们也能够像优秀的学生一样在课堂中表现出充分的自信。另一方面,结对编程活动的开展,使学生间有了更多的互动和学习的机会,这将有利于提高学生团队合作意识。总的来说,该翻转教学模式能够使学生以更高的热情参与到教学活动中来,教师将从传统教学方法中知识的讲授者转变为翻转课堂中学生的辅导者与合作者;结对编程的具体实施,对提高学生学习方动性与创新性也起到了重要的促进作用。
参考文献: