Investigating students’ behavior and code quality when applying pair-programming as a teaching technique in a Middle Eastern society

Pair-programming is a software development technique that was introduced as part of Extreme Programming. In pair-programming, two developers share a computer to work together on developing one piece of code. To test Pair-programming effects on students' behavior and performance in a Middle Eastern society where some interaction restrictions are found, we devised an experiment that was carried out over an entire academic year consists of two semesters. The experiment targeted two sections per semester of an advanced computer programming course. The students of one of the sections worked in pairs during the lab sessions, applying pair-programming rules and techniques. The other section had students who worked individually, as it is the norm in most programming labs. Video recordings were recorded throughout the lab sessions, and then studied and analyzed. In addition, code samples were collected from the students to study the effect of pair-programming on the students' code quality. Through this experiment we found out that pair-programming has the potential to increase the students' confidence, their enjoyment of the course, and improved the course's completion rate. In addition, the students in the pair-programming sections showed that they were able to individually produce code of better quality than the students in the traditional section.

[1]  Colin Depradine Using gaming to improve advanced programming skills , 2012 .

[2]  Andrew Begel,et al.  Pair programming: what's in it for me? , 2008, ESEM '08.

[3]  Mark Guzdial,et al.  Success in introductory programming: what works? , 2013, CACM.

[4]  Alberto Sillitti,et al.  Pair Programming and Software Defects--A Large, Industrial Case Study , 2013, IEEE Transactions on Software Engineering.

[5]  Stefan Wagner,et al.  Introduction of static quality analysis in small- and medium-sized software enterprises: experiences from technology transfer , 2013, Software Quality Journal.

[6]  Emilia Mendes,et al.  Empirical Studies of Pair Programming for CS/SE Teaching in Higher Education: A Systematic Literature Review , 2011, IEEE Transactions on Software Engineering.

[7]  Annu B. Prabhakar Applying pair programming for advanced Java course: a different approach , 2011, SIGITE '11.

[8]  Alberto Sillitti,et al.  Understanding the impact of Pair Programming on developers attention: A case study on a large industrial experimentation , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[9]  Raúl Antonio Aguilar Vera,et al.  Pair versus Solo Programming - An Experience Report from a Course on Design of Experiments in Software Engineering , 2013, ArXiv.

[10]  Emilia Mendes,et al.  Investigating the effects of personality traits on pair programming in a higher education setting through a family of experiments , 2012, Empirical Software Engineering.

[11]  Joost Visser,et al.  Standardized code quality benchmarking for improving software maintainability , 2011, Software Quality Journal.

[12]  Ahmed E. Hassan,et al.  Studying the relationship between source code quality and mobile platform dependence , 2014, Software Quality Journal.

[13]  Alex Radermacher,et al.  Assigning student programming pairs based on their mental model consistency: an initial investigation , 2012, SIGCSE '12.

[14]  Stuart Wray How does pair programming work , 2009 .

[15]  Madonna Margaret Teague,et al.  Pedagogy of introductory computer programming : a people-first approach , 2011 .

[16]  Giancarlo Succi,et al.  Extreme Programming Examined , 2001 .

[17]  Jens Bennedsen,et al.  Failure rates in introductory programming , 2007, SGCS.

[18]  Morgan Ericsson,et al.  Analyzing the Efficiency of Pair Programming in Education , 2014 .

[19]  Emilia Mendes,et al.  The effects of neuroticism on pair programming: an empirical study in the higher education context , 2010, ESEM '10.

[20]  Angkul Kongmunvattana,et al.  A Pair Programming Trial in the CS1 Lab , 2010 .

[21]  E. Mentz,et al.  IT Teachers' Experience of Teaching-Learning Strategies to Promote Critical Thinking , 2015 .

[22]  Manisha Giri,et al.  Effectiveness of Software Development Process Using Programmer Ranker Algorithm in Pair Programming , 2013 .