钟文峰 刘晓璐
摘 要:针对高职软件技术专业学生普遍缺乏团队协作精神这一问题,提出了在《C语言程序设计》课程的实践教学中融入结对编程技术。经过与独自编程的对比实验,发现实施了结对编程的班级学生的整体编程能力提高的较明显,也表现出更强的团队协作精神。
关键词:C语言程序设计;实践教学;结对编程;团队协作
中图分类号:G712 文献标识码:A
在高职院校,程序设计语言像C语言、Java语言等都是软件技术专业学生进行程序设计的入门语言,一般首选C语言作为入门语言,在第二学期再学习Java语言。《C语言程序设计》课程传统的教学方法往往只注重学生个体能力,忽视了学生口头表达、沟通协调等团队协作能力的培养,而团队协作能力是从事软件开发工作的基本素质。如今,社会分工越来越细化、技术及管理越来越复杂,团队协作能力往往比个人能力显得更为重要,尤其在IT行业。因此本课题以《C语言程序设计》这一门课程为蓝本进行结对编程的实践教学探索研究。
1 结对编程模式介绍
结对编程是一种敏捷软件开发方法,已经在一些IT公司中被采用。其基本含义是两个程序员组合成一对共同来完成程序文档和代码的编写。两个程序员共同在一台电脑上工作,完成算法设计、代码编写和软件测试等。当其中一人进行代码输入的时候,另一人则在旁边随时审查他输入的每一行代码并提出改进意见,他们的关系好比赛车手和领航员的关系。只动口不动手的人主导整个的设计思想,由操作键盘的人来实现。由于人的思维速度比输入代码的速度快得多,所以在旁边审查的人可以有空闲的时间做额外的思考,观察代码编写和程序内部结构有没有问题。结对的两个程序员经常互换角色,这样可以取长补短,以便更准确更健壮地完成代码的编写。结对编程要求两个程序员相互协调,相互配合,这对提高程序员的程序设计能力和提升沟通协调等团队协作能力都都具有积极的作用。
2 结对编程在程序设计课程实践教学中的实现
2.1 学生结对的分配方案
进行结对编程实践教学之前要对学生进行分组,每两人组成一对。现在的学生独立意识比较强,經常只会跟自己身旁熟悉的同学交流,如果给他分配一个不熟悉的同学很可能就不愿意交流。还有,学习能力差的两个学生结对,往往会出现由于两人都不会而不知怎样开展工作的局面。IT企业界普通建议结对的双方不要从头到尾一直固定,而是要随着项目的推进做些调整。所以为了能够更有效地给学生结对,采用前期的自由结对和后期的能力结对方案。前期由学生自己寻找结对伙伴,主要是让学生尽快熟悉结对编程角色的搭配和工作的开展过程。后期学习的内容难度上升了,改用“优带中、优带弱,中带弱”的能力结对,力争使每一个学生都能学到知识,达到整体提升的目标。把实践教学的内容归结为一个一个的问题模块,在每个问题模块中对学生进行结对编程,在不同的问题模块内学生的结对可以改变,但要遵循上述分配的原则。基于问题模块的结对编程如图1所示。
2.2 结对编程的实践教学设计
从作者所带的软件技术专业中选取了一个班进行了结对编程的实践教学实验,另外一个班采用常规的独自编程。这两个班的实践教学内容是相同的,均以问题模块的方式布置实践内容,只是编程模式不同。结对学生内部协调好角色的分配,起初自定谁来操作键盘输入代码谁来审查对方输入的代码。
第一次结对编程时教师找了一个学生进行结对,给学生们演示结对编程的过程,让学生对结对编程有个初步的认识。在每次实践课中,特别要求同学们做到以下几点:结对伙伴之间要有礼貌,相互尊重;要和搭档不断地交流沟通,交流频率不要低于两分钟一次;要不断地变换结对伙伴间的角色,比如每10分钟或完成了一个小功能变换一次,让结对双方共同进步;鼓励各对之间课后互相交流,吸取其他对好的经验;每次实践课结对结束的时候,要及时给搭档一些建议或意见,虚心接受反馈;不要做一个专横的领航员;不要抢夺赛车手的鼠标或键盘。学生结对编程的时候教师要不断地巡视学生,及时发现异常情况并解决。比如,对于能力相差大的结对,老师要注意及时参与进去,多鼓励较弱的学生;结对双方意见不一致发生争执时老师要及时调和;与结对成员共同讨论优化程序的算法等。
2.3 结对编程实践教学效果分析
本文选择了软件技术2班在《C语言程序设计》课程的实践教学中进行结对编程的教学探索实验,作为对照班级的软件技术1班进行传统的独自编程。两个班的人数一样多,教学总课时都是90,理论与实践比例均为1∶1。通过对实验班和对照班的对比,发现相同的实践题目,实验班学生完成的情况整体上要比对照班好,无论是学生学习编程的积极性方面、还是编写的程序健壮性方面都是呈现较好的势头。对照分析两个班的教学效果,总结如下:
一是在学生的沟通和团队协作能力培养方面。独自编程讲究的是单打独斗,一个人在那埋头苦干,算法设计、代码编写、程序调试等都是自己一人做决定,毫无沟通和合作理念。结对编程讲究的是并肩作战,程序算法的设计、代码的编写、程序的调试和评审都是在两个人经过不断的沟通交流下进行的,两人达成一致意见才能付诸实施,是一个高频交流和协作的团队活,学生频繁的沟通地得到了锻炼,团队协作能力也得到了很大的提高。
二是在学生抗挫折和学习积极性方面。独自编程的学生由于是独干,编程过程中遇到了问题如果经过自己的努力还是解决不了,要么就放弃在那偷偷地玩手机,要么坐在那等待老师来指导。由于班上学生人数较多,平均等待老师的指导要十分钟左右,等待过程很容易让学生产生失败感,这样的次数多了逐渐地就会对编程失去兴趣。结对编程的学生由于是合作,当其中一人遇到问题时他可以与结对伙伴交流,取长补短,积极地去解决问题,待到程序调试结果正确的那一刻他们的成就感倍增,从而增强了学习的兴趣,学习积极性自然会提高。
三是在学生学习效率和老师负担方面。根据多年的教学观察,发现学生们在编程过程中遇到的bug多数是一些语法错误。独自编程的学生面对这些常见的bug,他们在很大程度上等待老师来帮助解决,等待的时间少则一到两分钟,多则十几分钟都有可能。一个教师很难及时一一指导一个大班级中的每一位学生,学生的学习效率低,老师的负担也重。编程过程中学生遇到一些常见的bug,结对伙伴间可以通过相互交流就可以解决的,学生既锻炼了沟通表达能力又没有浪费时时,学习效率自然会高。老师的精力就不是帮助学生排除一些常见的bug,而是主要用于指导学生如何改进算法、如何将所学知识做更深入的应用等问题上,减轻了老师的负担。
四是在学生编写的代码错误率方面。独自编程从算法设计、代码编写到调试整个过程都是一人在做决定,由于编程人员知识不牢、考虑问题不周全等因素,往往编写出来的程序bug会比较多。结对编程的两个人在一起写代码的时候考虑问题会更加全面,能够融合两人的程序设计思路,更容易设计出结构更优的算法和编写出执行效率更高的程序代码。同时也会更早地发现程序中的bug,减少错误出现的次数,提高程序的质量。结对编程可以把程序代码的错误率降低15%~50%之多。
为了能够更清楚地分析结对编程的实践教学效果,在此收集了两个班对应的6个问题的编程正确率,并绘制成图表如图2所示。从图2可以看出,采用结对编程的实验班的编程正确率明显高于独自编程的对照班,而且实验班的编程正确率保持相对较稳定。
3 结语
在《C语言程序设计》课程的实践教学中引入了结对编程。通过对照实验,发现学生编写程序的能力更高、编写的程序更健壮、学生的学习积极性更强、学生的沟通和团队协作精神表现的更突出。在此,结对编程时要注意以下几点:沟通是结对编程成功的关键,你和你的伙伴应该保持沟通;不要侮辱你的搭档,要尊重对方;不要做一个专横的领航员;一定要经常切换角色;结对编程也是团队合作。
参考文献:
[1]李支成,向华,吴开诚.结对编程在计算机语言课程混合教学改革中的应用[J].电脑知识与技术,2019(8).
[2]徐胜舟,杜小坤.结对编程在Java Web开发课程实践教学中的应用[J].现代计算机,2015(05).
[3]黄家玮,钟萍,季桂树.计算机程序设计课程配对学习模式教学研究[J].计算机教育,2014(12).
[4]魏妮妮,宋翌.结对编程在程序设计基础课程实验教学中的研究与实践[J].实验技术与管理,2013(12).
基金项目:院级课题“创新结对编程在高职《C语言程序设计》课程实践教学实现”(编号:JXXD-2019-14)的研究成果
作者简介:钟文峰(1978—),男,汉族,江西分宜人,硕士,副教授,主要研究方向:高职教育、嵌入式与物联网系统的设计;刘晓璐(1983—),女,汉族,江西安福人,硕士,讲师,主要研究方向:高职教育、软件技术。