自年英国率先提出小学生要学习编程以来,包括我国在内的许多国家也提出要普及中小学编程活动。目前,国内不少中小学已经增加了编程教学课时,主要是学习scratch编程。
得益于经济的发展,多数编程课已经能够保证学习用设备学生人手一台,意味着“独立编程”的物质保障方面已无障碍,但许多研究发现“独立编程”并不是编程教学的最佳组织形式,而目前流行的“项目式编程”教学也不一定能让每个学生都发展各自的编程能力,那么什么样的教学组织形式更有利于学生个人的编程能力发展呢?
小编今天就和大家分享一篇探讨到底哪种方式更有利于我国中小学编程教育的文章,供大家参考。作为敏捷软件开发的方法——结对编程,即两个程序员在一台计算机上协同开发同一个编程任务的工作方式。因其具有能够行之有效的提升编程能力这一优势,而在计算机行业盛行,从而被引入中小学编程教学,但实际情况中,其价值没有得到应有的重视。本文作者通过搜集、分析国外研究文献中对结对编程教学实践的研究发现,阐明了结对编程的独特优势——培养学生编程自信、帮助学生快速适应编程文化,并总结了一些影响结对编程有效实施的关键环节,论证了“结对编程是中小学编程教育的首选教学组织形式”,希望能够推动结对编程在中小学编程教育的有效应用与推广。
人们常用驾驶汽车时的角色分工来解释结对编程:驾驶员与领航员,各自分工又相互合作。控制键盘、鼠标并编写代码的人为驾驶员,而旁边持续观察、监控程序逻辑并提供辅助支持的人为领航员。一旦遇到问题,双方共同讨论解决,而且两者的身份可以根据工作内容自由地、周期性地交换角色,但不管在何时双方都应是平等参与并共享编程的产出。年,Beck提出包括结对编程在内的12项极限编程实践,颠覆了原来软件工程领域主流的瀑布式开发模式和螺旋式迭代的原型开发模式,强调程序员相互借助同伴的力量即时解决问题、把控编程质量,能有效解决企业开发周期长、迭代成本高等问题。三种软件开发模式如图所示,可看出结对编程所属的极限编程模式是在并发地完成软件开发的4个基本步骤,即分析、设计、开发和测试四个步骤同时进行。
三种软件开发模式(来自Beck)
正是由于结对编程在企业中的成功实践,计算机科学教育工作者们认为把结对编程运用于教学场景中,或许是不错的选择。目前,国外已经积累了丰富的结对编程教学经验,并有研究发现:结对编程在提高学生编程能力、计算思维、编程学习热情、元认知等方面有积极效果。但当我们向国内一线老师推荐结对编程时,常会遇到一些挑战:“结对编程与独立编程或项目式编程相比,有何特别之处?”、“中小学生编写的程序都不长,有多大必要非要两人用一台设备进行结对编程?”、“如何结对的效果最好?”……为了有理、有据地解释这些疑惑,以下是文章作者在广泛搜集了国内外文献之后,从编程学习初学者常见问题的角度分析对比结对编程的优势所在,剖析总结结对编程的学理价值和成功关键,希望这种形式可以帮助我国的中小学开展更为有效的编程教育。
基于上述对独立编程、项目式编程和结对编程的比较,本文作者认为中小学阶段是培养学生编程兴趣和能力的初始阶段,采用结对编程教学组织形式,可以有效保护并保持学生学习编程的兴趣和自信,支持其在相互支持和鼓励中快速、扎实地掌握编程的基本技能。
“如何结对最合适”,是初次接触结对编程的人常问的问题。以下多视角的研究发现或许能够给教师一定的参考和启发。一开始处于互帮互助的理念,教师会希望有编程经验的学生与无编程经验的学生结对搭配。
但有研究发现编程能力较强的学生在不匹配的结对编程中学习满意度较低,而能力较弱的学生满意度则更高、编程能力提升速度也更快。
那么造成这一现象的部分原因是什么呢?
经验较为丰富的学生往往对同伴缺乏耐心,认为向同伴解释编程概念并等待同伴理解是在“浪费时间”,故而选择独立完成编程任务,而中等和较低编程水平的学生则因为可在合作中观察水平较高的学生解决问题,从中受益更多。
有关结对规则影响结对编程学习效果的其它研究也证实了这一点:真正影响结对编程实施效果的,是学生感知到的结对匹配度、与同伴的合作态度和意愿等,而不在于学生的年龄、性别、能力等特征。
这些研究发现提醒我们:结对双方各方面的差异不要太大,明确角色分工和合作规程将有利于消除或减少矛盾的发生。我们可以学习外国学者主张的,通过教学视频帮助学生理解“驾驶员”和“导航员”的角色、轮换角色的重要性,并强调结对编程中双方积极参与的价值。
一般来说,中小学学生编程能力差别不大,且适应能力强,有实证研究发现良好合作的结对双方其角色分工往往并不是泾渭分明的,而是可能在合作过程中自然出现“教师—学生”或“思考者—实干家”等有效且充满活力的学生角色分工变体。
但只要学生认为在结对编程过程中双方能够平等地交流和进行角色轮换,公平地承担工作量,他们对结对编程的满意度就较高。在编程教育领域,对女生和弱势群体学生的研究也是一个