Saehanseul Yi, Department of Computer Science

Pair-Programming in Classrooms

Pair-programming is a programming paradigm where two or more programmers share a single computer. Lindvall et al. show that pair-programming is effective in professional fields because programmers are able to share knowledge with each other [1]. Therefore, pair-programming [2] is being widely adopted in classrooms. By programming in pairs, students can reinforce their individual learning by helping their peers solve programming problems. Because students doing pair-programming are actively communicating with their peers to solve programming problems, they are more engaged in their learning and have better retention of learned material than they would otherwise. Pair-programming seems to fit perfectly in the active learning paradigm. But is it as effective for the classroom setting as it is in professional fields?

Partner Dynamics in Pair-Programming

My TA experience says “no” to the question. In my class, students find a partner by themselves (which is not encouraged in theory because it decreases diversity). Therefore, I could observe many forms of teams. In theory, a student having difficulty should learn from their good-skilled partner. However, that did not happen. Worse, a team that consisted of low-performing students did not make them learn better. They remained low in performance. Why did this happen? Because programming sense and problem-solving skills, which is important in programming, are not easily transferable. Rather, in most cases, they are obtained by students themselves tinkering with their code and doing some experiments. Once the students reach a certain level of problem-solving skills and acquire a sense of programming, they can communicate themselves well and enhance their skills by doing so [3]. On the other hand, a team consisting of both high-performing and low-performing students find it hard to communicate between members. That can lead a low-performing student to become a social loafer, who exerts less effort toward the goal. A study [4] shows inequitable skills in pair-programming can be harmful for low-ability students.

Learning Programming is Different

Learning programming takes a long time. There is even a book titled “Teach Yourself Programming in Ten Years” [5]. This is because programming, or coding, is nothing like what we go through in our daily lives or learn from schools. It takes time to adapt to a new world. I don’t want to be pessimistic, but it is hard to expect students to reach a degree that they can share knowledge and cooperate in their first programming course. In addition, computer science is very active and fast evolving field which means it is high in volume and students can be easily lost in the sea of new concepts and tools. Technically, a student can code without that knowledge, but it would be a world of black boxes that overwhelms the student. Pair-programming is helpful when all the members in the group are actively engaged in discussion. In order to achieve that, teachers should provide enough hints and guides to lower the bars for low-performing students.

References

[1] “Empirical Findings in Agile Methods”, M. Lindvall et al, Conference on Extreme Programming and Agile Methods, 2002

[2] “Pair Programming in Inducing Knowledge Sharing” M. Rejab et al, Proceedings of the 3rd International Conference on Computing and Informatics, 2011

[3] “Exploring the Pair Programming Process: Characteristics of Effective Collaboration”, F. Rodriguez et al, 2017

[4] “How Equity and Inequity Can Emerge in Pair Programming”, C. Lewis et al, International Conference on International Computing Education Research, 2015

[5] “Teach Yourself Programming in Ten Years,” P. Norvig, 2001

Matthew Mahavongtrakul edited this post on June 7th, 2019.