In Support of Pair Programming in the Introductory Computer Science Course

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.