In Support of Pair Programming in the Introductory Computer Science Course

In Support of Pair Programming in the Introductory Computer Science Course
复制标题

支持计算机科学入门课程中的结对编程

DOI:
--
复制
发表时间:
2002
期刊:
影响因子:
--
通讯作者:
Carol Miller
Carol Miller
中科院分区:
--
文献类型:
--
作者:
L. Williams;E. Wiebe;Kai Yang;M. Ferzli;Carol Miller

文献摘要

被引文献

相似文献

一个正式的配对编程实验在北卡罗来纳州进行经验评估的教育效果的技术在CS 1课程。结果表明,练习结对编程的学生在编程项目上表现得更好,并且更有可能以C或更好的成绩完成课程。学生结对更加自给自足,这减少了他们对教师的依赖.合格的,配对的学生比单独工作的学生表现出更高层次的思维能力。这些结果支持结对编程作为一种协作学习技术。在工业中,程序员一天中的大部分时间都在协作。在Peopleware(DeMarco and Lister,1987)中,有报告称软件开发人员通常花费30%的时间独自工作,50%的时间与另一个人一起工作,20%的时间与两个或更多人一起工作。然而,大多数情况下,当完成学位时,程序员必须学会独自编程;合作被认为是作弊。这是不幸的,不仅因为学生未来的职业生活鼓励和需要合作,而且还有研究发现合作和协作教学法对学生有益(Slavin 1980,1990)。一种新兴的软件开发方法,极限编程(XP)(Beck,2000),最近流行了一种称为结对编程的程序员协作的结构化形式。结对编程(英语:Pair programming)是一种编程风格,两个程序员在一台计算机上并排工作,持续合作进行相同的设计、算法、代码或测试。其中一个被称为司机,在电脑上打字或写下设计。另一个合伙人,叫做领航员,有很多工作。一个是观察司机的工作-寻找司机工作中的缺陷。领航员有一个更客观的观点,是战略性的,长远的思想家。此外,驾驶员和导航员可以随时进行头脑风暴。有效的结对编程关系是非常活跃的。驾驶员和导航员至少每45到60秒进行一次交流,即使只是通过话语。定期地在驾驶员和导航员之间切换角色也非常重要。研究结果(威廉姆斯,凯斯勒等人,二○ ○一年; Cockburn &威廉姆斯,2002年)指出,结对程序员产生更高质量的代码时,大约一半的时间相比,单独的程序员。这些结果是基于犹他州大学高级软件工程课程的实验(威廉姆斯,2000;威廉姆斯& Kessler,2000;威廉姆斯& Kessler,2001)。这项研究的重点是对实践的负担能力,实践产生更高质量的代码,而不显着增加时间/成本的能力。然而,研究人员观察到了学生对程序员的教育好处。这些好处包括:评分作业的上级结果、学生满意度的提高/挫折感的减少、学生对项目结果的信心的增加以及教学人员工作量的减少。这些观察启发了进一步的研究,旨在使用结对编程教育计算机科学专业的学生。本文详细介绍了2001年在北卡罗来纳州州立大学(NCSU)进行的一项实验的结果。该实验是专门设计来评估在入门课堂上的结对编程的有效性。
A formal pair programming experiment was run at North Carolina to empirically assess the educational efficacy of the technique in a CS1 course. Results indicate that students who practice pair programming perform better on programming projects and are more likely to succeed by completing the class with a C or better. Student pairs are more self -sufficient which reduces their reliance on the teaching staff. Qualitatively, paired students demonstrate higherorder thinking skills than students who worked alone. These results are supportive of pair programming as a collaborative learning technique. In industry, programmers collaborate for the majority of their day. In Peopleware (DeMarco and Lister, 1987), it was reported that software developers generally spend 30% of their time working alone, 50% of their time working with one other person, and 20% of their time working with two or more people. Yet, most often when completing their degree, programmers must learn to program alone; collaboration is considered cheating. This is unfortunate not only because collaboration is encouraged and required in a student’s future professional life, but there are also findings that cooperative and collaborative pedagogies are beneficial to students (Slavin 1980, 1990). An emerging software development methodology, Extreme Programming (XP) (Beck, 2000), has recently popularized a structured form of programmer collaboration called pair programming. Pair programming is a style of programming in which two programmers work side-by-side at one computer, continuously collaborating on the same design, algorithm, code, or test. One of the pair, called the driver, types at the computer or writes down a design. The other partner, called the navigator, has many jobs. One is to observe the work of the driver – looking for defects in the work of the driver. The navigator has a much more objective point of view and is the strategic, long-range thinker. Additionally, the driver and the navigator can brainstorm on-demand at any time. An effective pair programming relationship is very active. The driver and the navigator communicate, if only through utterances, at least every 45 to 60 seconds. Periodically, it’s also very important to switch roles between the driver and the navigator. Research results (Williams, Kessler et al., 2001; Cockburn & Williams, 2002) indicate that pair programmers produce higher quality code in about half the time when compared with solo programmers. These results were based on experiments held at the University of Utah in the senior-level Software Engineering course (Williams, 2000; Williams & Kessler, 2000; Williams & Kessler 2001). The focus of this research was on the affordability of the practice of pair programming, the ability of the practice to yield higher quality code without significant increases in time/cost. However, the researchers observed educational benefits for the student pair programmers. These benefits included superior results on graded assignments, increased satisfaction/reduced frustration from the students, increased confidence from the students on their project results, and reduced workload of the teaching staff. These observations inspired further research directed at the use of pair programming in educating Computer Science students. This paper details the results of an experiment that was held at North Carolina State University (NCSU) in 2001. The experiment was specifically designed to assess the efficacy of pair programming in an introductory classroom.