结对实验在计算机专业课程实验中的应用

2009-09-06 06:26徐长梅
计算机教育 2009年22期

徐长梅 阎 巍

摘要:大学计算机专业教育需要着重培养学生的协同工作能力、人际交往能力,但是通常的教学方法与这个目标之间存在一定的差距。我们将软件开发实践中“结对编程”方法应用到计算机专业课程的实验组织过程中,通过学生之间轮换式的“一对一”交流,培养学生的团队精神,达到了良好的教学效果,提高了学生的学习兴趣。本文介绍了这种教学方法。

关键词:结对实验;实验组织方法;相互学习

中图分类号:G642 文献标识码:B

1引言

计算机科学是一门注重实践能力的学科。在《中国计算机科学与技术学科教程2002》对毕业生特征的能力与技能要求中,明确指出实践能力和技能是计算机科学与技术专业学生的必备能力和技能。在随之而来的我国大学计算机专业课程设置和课程标准改革中,对学生实践能力的培养进一步增强,对学生的计算机研究和应用技能进行了系统的设计。

计算机专业培养方案的顶层设计已经比较合理和可行,但是课程实验的实施方法依然存在着很多的问题。

首先,计算机专业课程实验(实践课程)的现有模式影响了学生的学习效率。随着高校办学能力的提高和招生规模的扩大,学校的机房一般可以容纳100~200名学生,但是辅导教师的配备一般不会超过5名,1∶20(甚至1∶40)的比例显然无法满足教学实践中个别辅导的要求。学生从发现问题到解决问题的时间太长,会影响部分学生的积极性,甚至降低学生专业学习的兴趣。

其次,大多数课程(实验)注重学生技术、技能的培养,但是不注重学生协作能力的培养。在计算机系统大型化发展中,计算机系统的设计和开发不再单纯依靠个人的单兵作战能力,更多地注重团队的整体能力,其中团队成员之间协作能力是一个重要的成分。

虽然“软件工程”一类的课程专门安排了大型实验,着重培养学生的团队精神,但是由于在团队组织上存在必要的实践经验和管理指导,团队中人员职责不清,人员之间的时间协调存在困难,最后的实验结果往往是团队中能力最强的同学完成了绝大部分的工作,这不是实验的预期目的。

在《中国计算机科学与技术学科教程2002》中对专业实践进行了专门的讨论,学生口头和书面交流能力、协同

工作能力、人际交往能力分别排在社会能力需求的前4位,目前课程实践教学活动的一般方法往往不能达到社会需求。

为了解决这些问题,我们将软件开发中的结对编程技术引入到课程实验中,既可以更好地完成课程实验内容,也让学生掌握了一种计算机系统设计的实践技术,同时也培养了蕴含在计算机科学领域内的科学素养和工程技能。

2结对编程

结对编程是一种软件开发实践,在结对编程场景中,两名程序员并肩工作在同一台计算机前,共同探讨设计方案、共同设计算法、共同编写程序代码、共同完成各种测试。在结对的两人之中,负责编写程序的称为“驾驶员”,另一方则称为“领航员”。“领航员”的主要任务是观察“驾驶员”的工作情况,发现并纠正其操作性和策略性错误。

“驾驶员”和“领航员”分别使用两个不同的键盘和鼠标,但是共享同一个主机和屏幕较大的显示器,大多数情况下都有“驾驶员”使用键盘和鼠标,而只有在“领航员”发现问题或者“驾驶员”提出问题,“驾驶员”主动放弃键盘鼠标“主控权”的情况下,“领航员”使用几个简单的键盘和鼠标动作,启示或者演示程序设计中的重要方法和步骤。

“驾驶员”和“领航员”是结对编程中两个关键的人物,但是程序员在一次结对编程中需要经常交换“驾驶员”和“领航员”角色。也就是说,某个程序员在头一个小时内是“驾驶员”,而在下一个小时中应该是“领航员”。而且在团队内部,“驾驶员”和“领航员”的配对并不固定,一个程序员在软件开发周期中可能与团队其他所有的程序员都有过配对的经历。

这样的软件开发模式可以降低团队的培训成本,提高开发效率和软件质量,增强团队的凝聚力和信心。

3结对实验

结对编程技术来源于工程实践,项目的开发和大学教学存在着工作目的、工作环境、人员构成等方面的差异,我们针对教学工作中学生和教师的特殊对象,特别就“数据库系统原理”和“大型数据库应用开发”课程采用了结对实验的方法。

在课程实验的初期,结对是很困难的。一方面,学生之间的了解不是很深,潜在的防范意识会让学生自然地选择熟悉的朋友作为搭档;另一方面,学生之间能力和知识上存在一定的差距,成绩差的同学不愿与成绩好的同学搭档,害怕暴露自己的缺陷;而成绩好的同学也不愿意与成绩差的同学联盟,担心他们会影响实验的进度和质量。这些现象都是正常的,我们在课程实验开始的时候,让学生自由组对,而且成对完成课程的最初1~2个实验。我们称之为固定搭档,它的目的是消除学生对结对的忧虑,增强同学之间交流的信心,提高学生之间结对实践的能力。

经过这样的适应期后,我们特意打乱学生结对的次序,一般采取交叉结对的方式,比如按照10个人为一段,学号为1的与学号为11的结对,学号2的学生与学号12的学生结对,如果刚好某一对是之前的搭档,则进行微调。我们以一个实验为周期,完成一个实验后,加大交叉的力度,试图让学生在课程中尽量经历不同的搭档。我们将这个阶段称为轮流搭档。

结对实验也遵循结对编程的一般原则。一个实验过程中,不是一个人唱主角,另一个跑龙套,固定的结对方式对搭档双方都不利。我们将一次上机时间分为四段,一个时间段甲同学坐在键盘前,下一个时间段就轮到乙同学坐到键盘前操作。这样的安排可以使得每个同学担当不同角色的时间尽量相同,他们在实验中担当同样的责任。

对于“大型数据库应用开发”课程的大型实验,轮流搭档的方式不利于实验的连续性,分组既是实验内容的需要,同时也是结对实验的需要。特别是在“大型数据库应用开发”课程完成了结对实验的实验之后,我们在同一班级的“大型数据库应用开发”课程中开始实施相对稳定的结对实验小组,小组在机房的座位安排一般都集中在一个范围较小的区域,小组人员结对的数量尽量是偶数,便于在机房中可以面对面、相邻而坐。分组结对便于小组人员在实验中的交流,同时相对减少大范围讨论对其他小组的干扰。

教师在课程实验中承担的责任非常重要。教师首先是一名好的“教练”,除了介绍实验技能和工具之外,在“驾驶员”和“领航员”都束手无策的时候,帮助解决学生的疑难问题。教师还应该是一名“协调员”,两名喜欢抬杠、或者谈话漫无边际、或者沉默寡言的学生都不是好的搭档,教师应该及时发现问题和调整学生对子,帮助学生按时、按量、按质完成任务。教师有时还必须担当“领航员”的角色,如果班级学生的数目是奇数、或者有的学生坚持不愿结对的时候,教师应该适当充当他们的”领航员”,甚至是“驾驶员”。

4教学效果及其分析

结对实验有效减轻了学生的负担。“驾驶员”在“领航员”的注视下,无形中就会更加集中注意力,实验的效率得到了提高。而且在“领航员”的提醒和帮助下,“驾驶员”可以减少很多不必要的错误,可以共同纠正不良的编码习惯,共同的调试也可缓解单独调试的紧张和忧虑。

结对实验是一个相互学习的过程,“驾驶员”和“领航员”的相互配合可以相互学习编程经验和调试方法。“领航员”的观察可以学到“驾驶员”的许多经验,即使是“领航员”的能力高于“驾驶员”,在解决“驾驶员”产生的莫名其妙错误的时候,“领航员”也可以积累新的调试经验。“驾驶员”能力高于“领航员”的时候,“领航员”的一些提问也可以引起“驾驶员”的反思,可以促进实验质量的提高。

结对实验中“领航员”和“驾驶员”的随时交谈无形中锻炼了学生的交流能力,“驾驶员”和“领航员”的交叉配对锻炼了学生适应不同对象的人际交往能力。相互帮助和配合无疑加深了学生之间的相互了解,学生之间不再只是“一张熟悉的面孔”。相互了解可以使同学们之间的关系更加融洽,在学习中的协作关系减少了同学之间的矛盾,也提高了他们缓和矛盾的社交能力。

结对实验增强了学生的学习信心,提高了学生学习和实验的积极性。学生在交流和相互学习中更加善于提出问题和寻求帮助。

作为另一个收获,结对实验减少了实验作弊情况。实验作弊的直接原因是无法完成实验或者不感兴趣,而结对实验降低了实验失败的可能性,也提高了学生对专业知识的学习兴趣。

5结论

结对实验是一个相互配合的活动,它实际上不是一个新鲜的实验教学方法(在物理和化学实验中已经进行过长期的实践,产生了良好的教学效果),我们仅仅是将计算机工程实践和其他课程的实验教学方法在计算机课程中进行了尝试。

结对实验的尝试改变了计算机实验教学的一贯模式,充分发挥学生的自主能动性,降低了课程实验对辅导教师配备数量上的要求,提高了学生的实践能力和合作交流能力。

为了更好地增强教学效果,结对实验对机房环境和教师能力提出了其他方面的要求。比如加大显示器的尺寸、增加实验桌面的宽度,以便于结对双方的合作。教师不再仅仅关注学生是否顺利地解决实验中的问题,而且需要观察结对的交流情况,及时采取措施平衡结对的气氛。

参考文献:

[1] 中国计算机科学与技术学科教程2002研究组. 中国计算机科学与技术学科教程2002[R]. 北京:清华大学出版社,2002.

[2] Laurie Williams & Robert Kessler. 结对编程技术[M]. 杨涛,杨晓云,译. 北京:机械工业出版社,2004.