结对编程在师范院校计算机专业实践教学改革中的应用

点赞:7825 浏览:24352 近期更新时间:2024-01-19 作者:网友分享原创网站原创

【摘 要】针对师范院校计算机专业实践教学存在的问题,提出利用结对编程进行实践教学改革的方案.分析了结对编程的特点、结对原则和实施要求,并与传统的实践教学进行了实验对比.实验结果表明,结对编程能有效降低Bug出现频率,提高学生动手能力和团队合作意识,促进了实践教学改革.

【关 键 词】结对编程:师范院校;实践教学改革;计算机专业

【中图分类号】G40-057【文献标识码】A【论文编号】1009-8097(2013)07-0122-05

引言

在我国高等教育体制中,师范院校计算机专业培养目标主要包括两个方面:一是要求毕业生具备教书育人的良好教育理论素质和技能:二是要求毕业生具备胜任所从事岗位的扎实的学科专业知识以及较强的实践能力和创新能力.长期以来,由于受传统教师教育培养模式的影响,师范院校计算机专业实践教学仅被看作是一种辅助性和验证性手段,导致出现重理论教学,轻实践技能,重思维能力,轻动手能力的现象,培养出来的学生难以适应社会需求.随着师范院校就业形式多元化的发展,毕业生不仅可以选择当老师,还可以从事软件开发、网络管理、信息技术等操作能力较强的工作.针对河南省4所师范院校的一份调型结果显示:计算机师范生只有34.7%的学生非常愿意和愿意从事教师职业,其中计算机专业科班出身的学生只有29.68%的人愿意从事计算机教学.由此可见,推行实践教学改革已成为师范院校的迫切要求.当前师范院校计算机专业应该着力培养“教师+IT工程师”新模式的人才,因此,如何提高学生的计算机应用能力,培养专业素养高、综合能力强、动手能力突出的实践型人才是亟须解决的问题.

对计算机专业而言,实践教学是培养计划的重要组成部分,而提高编程能力、践行软件工程思想、培养团队合作精神则是实践教学中的重要环节和目标,因此,各院校均将实践教学摆在了重要的战略位置上.目前,师范院校计算机专业的实践教学环节主要包括教学(课程)实验、实习实训、课程设计、毕业设计(论文)、实践创新等方面,实践操作方式大体分为独立完成和团队合作两种.但是不论哪种方式,都存在不足:独立完成方式开发周期长、开发效率低、Bug出现频率高,不利于培养团队合作精神,不利于践行软件工程思想:团队合作方式无法保证团队成员均能各司其职,无法达到全面发展,并且存在着“窝工”、“吃大锅饭”等现象.往往团队中只有小部分人真正动手编程,其他人员仅仅是借用团队实验成果达到实验或考核目标.通过分析目前实践教学实施过程中存在的问题,我们提出利用结对编程思想来改革传统实践教学方式的方案.

结对编程在师范院校计算机专业实践教学改革中的应用参考属性评定
有关论文范文主题研究: 实践教学相关论文范文 大学生适用: 本科论文、学士学位论文
相关参考文献下载数量: 16 写作解决问题: 写作资料
毕业论文开题报告: 标准论文格式、论文结论 职称论文适用: 技师论文、高级职称
所属大学生专业类别: 写作资料 论文题目推荐度: 免费选题

一结对编程概述

结对编程的定义为:两名程序员合作开发同一产品模块(设计、算法、代码),这两名程序员分别扮演“驾驶员”和“导航员”的角色,共同思考问题,共同负责产品模块的各个方面.“驾驶员”控制鼠标、键盘并编写代码,“导航员”主动持续地观察和辅助“驾驶员”的工作,找出代码的缺陷,思考替换方案.结对双方的角色不是固定的,而是进行周期性的交换.任何时候双方都是平等活跃的参与者,在整个项目开发过程中,两者共享所获得的工作成绩.

结对编程是极限编程12个最佳实践中最重要原则之一,是团队设计的基础,它与传统的开发过程有很大的不同.在传统开发过程中,每个开发人员负责系统的一部分开发任务,各自分工,互不干扰.而结对编程是两人结为一对,共同完成同一个开发任务.两人在同一台计算机面前进行编程活动,“驾驶员”进行操作编码,“导航员”观察代码并考虑设计问题.一旦发现问题时,暂停编码工作,双方讨论解决.结对者的角色根据需要进行不断调整和交换,包括与其他结对小组交换成员.

结对编程的概念起源于20世纪90年代中期.经过近20年的研究和发展,多数软件企业因其具有可以减少风险、提高生产效率、代码质量高、有利于交流学习等优点而积极采用结对编程.也有一些企业对其持反对态度,主要理由是认为结对编程浪费人力资源、对程序员要求太高、公司人手短缺等.高校教学中应用结对编程思想的目的与软件企业采用结对编程的目的不同,前者主要是帮助学生提高编程能力和培养团队合作精神.在教学方面,最有代表性的是在1999年犹他州立大学做的一项试验,结果表明虽然结对组在最初阶段比独立工作的学生完成同样任务花费的时间更多,但很快结对组花费的时间大幅度下降,而独立工作的学生需要花费比结对组更多的时间来达到相近的代码质量.国外研究显示,教学过程中采用结对编程可以提高学生的记忆力、自信心、学习兴趣、代码质量和学习成绩.国内研究表明结对组的共同学习失败率小于独立学习失败率,采用结对编程进行实践教学的班级普遍在编程能力和质量上优于采用传统实践教学的班级.而且,结对编程有利于培养学生互相学习的良好习惯,提高学生的自信心,促进团队合作和人际交往.但是,目前针对师范院校计算机专业特点的结对编程研究还很少.


二实践教学改革中对结对编程的要求

综合考虑师范院校计算机专业本科生的实际情况,对实践教学改革中践行结对编程从工作环境、项目选择、结对原则等方面提出相关要求.

1工作环境要求

由于结对编程工作模式是两人坐在一起共同完成程序的设计、编程和测试,因此需要将传统的“一人一桌一机”的工作环境改造为“两人一桌一机”环境,使工作台和设备的摆放便于结对搭档之间的交流与合作,为了不影响其他结对组的工作,最好将工作环境设置为隔断式空间.如图1所示.

目前,大多数软件公司的工作环境与图1类似(传统开发仍然是“一人一桌一机”),这样可以让学生“身临其境”感受未来实习或工作单位的工作环境.

2项目选择

实践教学不是单纯的课程实验,提高学生编程能力最好的方式是项目驱动式.考虑到师范院校计算机专业学生的实际能力和编程素养,功能全面、业务逻辑复杂、代码量庞大的大中型项目并不适合作为实践课题,而通常情况下只由一人工作几天甚至半天即可完成的微型项目也不能起到锻炼技能的作用.因此,团队结构简单,开发人数在4~6人,代码量在18人月以下,项目目标简单,不需要与周边系统集成,对系统高可用性要求一般的小型项目是最佳选择.同时,宜选择学生感兴趣的、业务逻辑比较熟悉的小型项目进行实践,如单机版游戏开发、多媒体教室预约管理系统、单词记忆软件等.3结对原则

实践教学改革的目的是最大限度地提高学生实际动手能力、培养团队合作精神和创新精神.实践教学改革中的结对编程除了满足基本的原则外,还应突出以下几点:

(1)按照编程水平高低,将学生分为高级、中级和低级三个级别,因此结对组合有“高级+高级”、“中级+中级”、“低级+低级”、“高级+中级”、“高级+低级”、“中级+低级”几种形式,为了达到学习和提高的目的,应该优先选择“高级+低级”的模式.在这种模式中,力求达到高手培养新手的“帮带”效果.

(2)结对编程的双方有一个较长的磨合过程,应该让学生尽早“结对”,争取在实践项目开始时,结对双方已经有多次合作经历.因此,在课程实验阶段,就应该让学生自行寻找“搭档”,并经常更换“搭档”,以期找到最“志同道合”的伙伴.伙伴的选择尽量将性格融合的,技术互补的配对.

(3)结对编程的双方经常交换角色.角色可以定时交换,也可以根据开发任务交换.检测设A为“高级”者,B为“低级”者,则难度大的任务由A担任“驾驶员”,此时B在一旁观摩和学习;难度小的任务由B担任“驾驶员”,此时A在一旁监督和指导.

(4)结对双方必须保证地位平等.“低级”者容易产生依赖和畏难心理,所以在结对编程过程中需要鼓励“低级”者积极主动,而“高级”者应该以指导和沟通为主.两人是平等的,只有经验多寡之分,没有地位高低之分.对“低级,,者而言,独立操作实现一个功能模块后,往往异常兴奋,在结对中也会表现得越来越积极.因此,安排难度适中的结对任务有利于加强“低级”者参与结对的意愿.

(5)结对双方必须全力以赴.结对编程本身能促使人竭尽全力,两人一起工作的时候,没有走神分心的条件.一旦编程过程中出现问题,则立即停止,双方共同讨论解决.

(6)结对双方必须对待解决的问题有相同或相近的认知.结对双方对开发任务都必须做到逐步了解、思路一致、编码规范一致,包括标识符命名规则、注释风格等.编程时先经过讨论,达成共识,然后方能动手编写程序.

(7)任务出错或不能完成,应由双方共同负责,不能相互指责.两人意见不同时,可由指导教师协助解决,不要各执己见、据理力争.

(8)指导教师给予学生更多鼓励,结对双方之间也需要相互鼓励、相互学习,可以产生共同的荣誉感、责任感和成就感.

三实验对比及分析

1实验设计

我们在课程设计这一实践教学环节中,采用对比实验的方法对结对编程进行评价.在课程设计开始之前,学生已经在课程实验阶段进行了结对编程训练.对比实验班级有44名同学,分成两个实验对比组:一组采用传统的小团队开发方式,称为传统组,组员各自独立编程;一组采用结对编程的团队方式,称为结对组,结对组由若干结对单元组成,结对单元采取两人结对编程方式.指导教师拟定4个课题并事先划分好模块,分别交由两个实验对比组完成,均采用面向对象程序设计.对比组分配如表1所示.

表1中,对比实验组的具体要求如下:

(1)两组均要求遵循软件开发流程,需要提交相关文档.

(2)两组均分成三个阶段,由指导老师根据时间确定,每个阶段同时考查各组的完成情况.阶段考查时,传统组需提交各成员的任务分配记录;结对组需提交结对交换记录.

(3)两组均以答辩的形式给出每个课题的最终成绩,并事先告知:传统组各成员均有自己的成绩,根据自己对课程设计的贡献给出;结对组每个结对单元的两人共同获得一个成绩(若结对单元之间经常互换结对角色,则参与交换的人员共同获得一个成绩).

2实验结果及分析

对比实验组的实验结果分别如图2、图3、图4所示.

图2显示在课程设计初期,结对组花费的平均开发时间比传统组长,原因是结对组在结对编程之前需要进行讨论和交流,达到共识后才进行动手编程,而且有些结对单元还处于磨合期.随着项目的进展,结对组的编程效率逐渐增加,与传统组的开发时间差距也逐渐减小.

图3显示,在各个开发阶段,结对组的平均Bug数量均较独立组少,原因是结对单元的两人对同一任务实行结对设计、结对编码、结对测试和结对评审.因此,在动手编程之前已进行了充分的交流和讨论并达成一致意见,而且在编程过程中,一人编程,另一人随时对编程中的错误进行监督和提醒,有效降低了Bug数量.

图4显示了两个实验对比组的平均成绩(4个课题的总平均成绩),成绩的考核综合考虑了开发时间、Bug数量、团队合作精神、项目完成质量、编码风格等指标.实验结果表明,结对编程的效果明显高于传统方式.

四结对编程对实践教学的改进

通过考查学生结对编程过程及对比实验分析,发现采用结对编程的学生,其编程素质有了明显的提高.因此,我们提倡在教学过程中采用结对编程思想来改革计算机专业实践教学.

1结对编程的优点

(1)动手能力较低的学生学习和上手速度快,主要原因为:一是学习的内容均是实际需要的,目的明确,针对性强:二是有人帮带,手把手的演示,比自己看书摸索进展快、效果好;三是边学边用,知识点掌握扎实.

(2)结对编程改掉了一些学生的编码坏习惯,同时也学习了他人的编程优点:如快捷键的灵活运用,解决问题的搜索技巧等.另外,代码的层次和语句变得更优美易读.

(3)工作效率提高了.结对中,一人对另一人实际上有监督作用,有效杜绝了学生上机时聊天、打游戏、泡论坛、看电影等现象.结对编程时两人合作能更有效地交流,相互学习和传授经验,解决问题能力有较大提高.而且,在结对过程中,结对双方经常有思想的碰撞,在讨论中更容易培养创新意识.

(4)程序Bug明显减少,代码质量显著提高.结对编程,首先需要两人共同理解,经过讨论,形成一致思想,才可以编程.这样减少了由于理解错误带来的风险;其次,结对编程在编写代码的同时进行着代码评审,出错几率降低了很多.所以结对编程能有效减少Bug数量.(5)每个学生都有动手实践的机会,都能在实际操作中学到实用知识,避免了前述传统团队开发中“窝工”、“吃大锅饭”的现象发生.由于每人需要完成自己的结对任务,所以几乎不存在照搬照抄他人成果的情况.

2对师范院校实践教学的促进作用

结对编程除了具备上述的优点外,对师范院校的计算机专业而言,还有着独特的优势.

(1)培养和提高了师范生的教学技能.师范生的教育实习是一个重要环节,但是多数学生的实习效果并不好,往往表现为不能进入教师角色,无法胜任顶岗课程教学任务等.究其原因是教育实习之前的试教环节存在弊端,因此严抓试教工作是教育实习取得成效的前提.但是,由于课时的限制,教师不可能让每个学生都试讲并给予指导.而结对编程环境恰好可以提供一个良好的试教平台,这也是提倡“高级+初级”结对方式的原因所在.因为,在帮助和指导“搭档”的时候,学生可以切身体会到“学会”和“教会”是两个不同的层次,要想讲清楚一个知识点,需要有耐心、勤思考.另外,被辅导的对象也会有无形的动力去努力学习,并模仿“搭档”的教学方式.因为老师讲解某个知识点可能无法完全站在学生的角度去考虑,学生如果听不懂会认为“老师懂这些是理所当然的”,而且性格内向的学生可能会羞于向老师请教.但是,如果这个知识点是由自己的同学来讲解的话,则情况大有改观.在这个过程中,学生往往能收获到成功的喜悦.

(2)增强了女生的自信心.师范院校女生居多,而且大都受“女生不适合学计算机”等片面观点的影响,往往对编程望而生畏.在结对编程中,不论知识点的难度大小,每个人均需要亲自动手操作.在公平对等的编程环境中,她们能真正动手敲程序代码,一旦完成了自己的第一个小程序,她们往往很有成就感,自信心也极大增强.如果能得到老师和“高级”者的鼓励和赞许,她们的进步会更大.

五结束语

结对编程是一种新的编程思想.虽然部分软件公司在项目开发中,对使用结对编程的方法持消极态度,表现为:(1)管理人员的反对;(2)不能让两个人干一个人的活;(3)编程人员的反对.究其原因主要是考虑开发成本等经济效益以及程序员编程水平相差大.而在本科教学中这几条因素的影响很小,故可以实施和推行.通过对比实验结果表明,结对编程可以加快学生的学习速度,同时还能提高程序的设计质量、减少程序缺陷、提高学生的操作技能和团队合作精神,并且在此过程中结对学生的心情更加愉快,学习积极性、自信心都得到了明显增强.但是,也存在着一些问题:如有的学生喜欢独立编程,不愿意结对(存在个别学生选择独自完成课程设计而不参与团队开发的现象):有时会出现不适合结对的时机,比如对新技术进行尝试和攻关的时候:如何采取有效措施让“低级”者真实地参与结对编程等.在下一步的实践教学改革中,将关注以上问题,寻找合适的解决方案.