101 | P a g e
STUDENTS PERCEPTION ON PAIR PROGRAMMING IN INDIAN HIGHER EDUCATIONAL SETTING
R.K. Kavitha
1, V. Jalaja Jayalakshmi
21,2Department of Computer Applications, Kumaraguru College of Technology, Coimbatore, (India)
ABSTRACT
Agile software development is an iterative and incremental methodology, where solutions evolve from self- organizing, cross-functional teams. Pair programming is one type of agile software development technique where two programmers work together with one computer for software development. This paper reports the results of the pair programming exercise carried out with fifty post graduate students who are engaged in developing small applications as a part of their Visual Programming laboratory at Kumaraguru College of Technology (KCT) during the academic year 2013-2014. The basic intent of the study is to explore the possibilities of adopting pair programming as a pedagogical tool in higher educational setting. The study investigates the possibilities of deploying pair programming in regular laboratory sessions for post graduate students. The research findings suggest that pair programming can be a useful approach to teach computer programming in higher education.
Keywords – Agile Software Development, Collaborative Learning, Knowledge Sharing, Pair Programming
I. INTRODUCTION
Agile software development promises to deliver increased productivity, quality and project success rate in software development projects. Synergizing considerable tacit knowledge through collaborative environments, agile methods promote proactive planning and encourage rapid and flexible response to change. Extreme programming [12] is one among widely recognized source point for various agile software development approaches. Extreme Programming focuses on disseminating knowledge through collaborative practices such as pair programming, planning game, and retrospectives. The basic idea behind these practices is to share work and expertise across teams. It is assumed that while programming in pairs, people try harder to code well and thus gains confidence. Pair Programming is an extreme programming practice where two programmers collaborate mutually at the same work station to acquire add up knowledge and experience on daily basis.
II. PAIR PROGRAMMING [PP]
Pair programming is practiced mostly by software developing institutions. The programmers collaborate as pairs by sharing a single computer working with the same design, algorithm, code, or test etc., [9][2]. One member of the pair, called as the driver, types at the computer or writes down a design. The other member who assumes the role of the navigator observes the work of the driver for objectivity, logic and process flexibility [10]. Anecdotal
102 | P a g e
evidence suggests that two programmers can be twice as fast, and can think of more than twice as many solutions than the two working on their own. The effectiveness of the pair programming depends on effective and frequent brainstorming among the pair. In addition, it also emphasis frequent exchange of roles between pairs. Moreover, constant code reviews, which is an inherent part of pair programming, results in higher defect prevention and reduction thus resulting in developing an error free product.
III. ACADEMIC PERSPECTIVE OF KNOWLEDGE MANAGEMENT IN COMPUTER PROGRAMMING LABORATORY SESSIONS
An agile methodology like XP relies heavily upon sharing knowledge and information for holistic development of organizations and is widely used across various industries nowadays. Knowledge management model helps the developers to share technical knowledge across the whole organization. On the contrary, dearth in information sharing has led many organizations to fail time and again. Thus the new paradigm has given a new impetus in teaching and learning software development related subjects.
The strength of knowledge sharing was felt when the students of MCA programme struggled a lot initially while developing applications owing to their different educational backgrounds. Pair programming really complimented the learning process commendably within short period of time [9]. It also helped the students to gain real time practical experience of software development through knowledge sharing and collaboration.
While programming in pairs, both the partners discussed and worked on the given problem, sharing their experience and knowledge [11]. By rotating pairs, the individual’s knowledge was shared among the entire team and enabled the students learn quickly enhancing their skill set efficiently.
IV. OBJECTIVES OF THE STUDY
Based on the experiences and the existing literature, it was proposed to study the effects and experiences of pair programming concept. Initially the factors including usefulness of pair programming, willingness to adopt in the near future and contribution to proactive learning were taken into consideration. The objectives of the study are:
Testing for association between usefulness of pair programming and its future adoption
To test the association between the effective learning and level of satisfaction with pair programming
V. EXISTING STUDIES ON PAIR PROGRAMMING
Several experiments on the effects of pair versus solo programming have been reported in the literature. Muller [8] has shown that pair programmers are as cost effective as solo programmers in producing code with fewer errors. According to Lui & Chan [7] pair programming promotes not only quality programming skills, but responsibility, mentoring, teamwork and increased enjoyment. Jari Vanhanen and Harri Korpi [6] have presented their experiences of using PP extensively in an industrial project. The results show that test-driven development and design in pairs possibly decreased defects and have improved quality and knowledge transfer, and was better suited for complex tasks than for easy tasks.
103 | P a g e
Tanja Bipp, Andreas Lepper [5] has presented the results of an extensive and substantial case study on pair programming, which was carried out in courses for software development at the University of Dortmund, Germany. Thirteen software development teams with 100 students took part in the experiments. The groups were divided into two sets with different working conditions. In one set, the group members worked on their projects in pairs. According to the study, the paired teams produced nearly as much code as the teams of individual workers at the same time. In addition, the code produced by the paired teams was easier to read and to understand. This facilitates detecting and correcting errors.
Norsaremah Salleh [4] reviewed 66 studies and has identified factors affecting the effectiveness of students who pair programmed, particularly related to the psychosocial factors such as compatibility, personality and gender issues. V.Venkatesan and A.Sankar [3] studied the effects of pair programming in student context on knowledge transfer and enjoyment of work. The study analyzed whether the task complexity affects the effort differences between solo and pair programming and whether pair programming improves knowledge transfer and enjoyment of work. The result of this experiment showed a significant difference in the duration of task completion, the effort to perform the task correctly between solo and pair programming. Norsaremah Salleh, Emilia Mendes, and John C. Grundy [1] have presented the evidence relative to the effectiveness of pair programming (PP) as a pedagogical tool in higher education CS/SE courses. The most common measure used by them to gauge PP’s effectiveness was time spent on programming. Results showed that students’ skill level was the factor that affected PP’s effectiveness the most. In addition, students’ satisfaction when using PP was overall higher than when working solo. Most of the studies conducted so far involved short duration experiments comparing the solo and pair performances. The results discussed in this paper are the outcomes of a controlled experiment carried out for a long duration. The study records the student’s perception on positive and negative aspects of pair programming.
VI. EXPERIMENTAL METHODOLOGY AND CONTEXT
In an effort to enhance the students learning process in Computer Applications course, it was decided to investigate the effectiveness of pair programming as a teaching methodology and to study the student’s perception on pair programming. The students were asked to work in pairs for the entire duration of the laboratory course.
6.1 Survey Method
The survey method is a technique of gathering data through questioning people who is assumed to provide desired information. A formal list of questionnaire was prepared and the responses were analyzed using standard statistical techniques. Two questionnaires were prepared with close ended questions with a 5 scale rating.
Initially the students were made to fill an entry questionnaire to judge the students level of exposure to programming tasks, partner preferences etc. An exit questionnaire was used to extract their experiences and has to be filled by the student individually at the end of the experiment.
104 | P a g e
6.1.1 Participants
The experiment was administered to 50 students of second year MCA program in a controlled experimental setup. An introductory presentation was given to the students to familiarize with the pair programming concept.
The lab concerned has 3 credits and doesn’t have an associated theory component. The VC++ software has a good user interface. The students were expected to explore the various functionalities themselves. The students were given the choice of choosing the pair. They did not have prior knowledge of VC++ software. The basic features of visual studio environment were demonstrated by the faculty. All the students were made to work in pairs in the regular laboratory sessions. They were insisted to rotate pairs and change roles often enabling knowledge transfer among them. All laboratory sessions were coordinated and closely observed by two faculty members.
6.2 The Controlled Experiment
A process framework was designed for conducting the experiment [Fig.1]. Having inculcated the requisite understanding about Pair programming the students were allowed to access the online software where the questionnaire entries will be made and subsequently stored in appropriate database. Seven tasks were chosen for the experiment. The tasks were executed during separate lab sessions of 3 hour duration each. After completion of the tasks, the students were asked to fill an exit questionnaire where they express the positive and negative aspects of pair programming. The data collected was analyzed using appropriate tools.
VII. Analysis and Interpretation
An analysis of the collected data was carried out using statistical analysis tools.
7.1 Students Perception on Pair Programming
From TABLE 1, we can infer that pair programming helps in sharing knowledge to greater extent and students are willing to adopt pair programming in future. The pair support rendered was high in the laboratory sessions [Fig.2]. It was observed that the aspect like role switching was felt less significant in pair programming sessions.
105 | P a g e
Fig 1. Pair programming process framework
TABLE 1: Students perception with respect to the positive aspects of Pair Programming
Variables Mean
Usefulness 4.50
Overall Productivity 4.07
Responsibility 4.02
Pair support 3.73
Sharing Knowledge 4.40
Roles Switching 3.02
Learning 3.65
Level of Satisfaction 4.46
Work Quality 4.50
Future Adoption 4.32
Fig. 2 Student’s perception on positive aspects of pair programming
106 | P a g e
TABLE 2: Students perception with respect to the negative aspects of Pair Programming
Variables Mean
Counter Productive 1.32
Distraction 1.44
Uncomfortable in Switching roles 1.10
Creativity inhibition 1.24
Contradiction in solution 1.52
Frequently, there were contradictions among the pairs while choosing appropriate solution for a problem [Fig.3].
Often there were distractions by the pair while working by holding unnecessary discussions. The participants have expressed that pair programming doesn’t inhibit their creativity in any way [TABLE 2].
Fig.3 Students perception on negative aspects of pair programming
7.2 Testing for association between usefulness of pair programming and its future adoption
Chi square test was used to find the association between perceived usefulness of pair programming and its adoption in future. The details of the contingency table and the chi square results are discussed below [TABLE 3]. The hypothesis formulated for the same is
H0 : There is no association between perceived usefulness of pair programming and its adoption in future.
107 | P a g e
TABLE 3: Testing for association between perceived usefulness of pair programming and its adoption in future
usefulness
willingness to adopt
Low High
Low High Total
18 10
5 11
23 21
Value
Asymp. Sig.
(2-sided)
Pearson Chi-Square 4.603a .032
The results of the chi square test indicates that the significance value is less than 0.05, therefore the null hypothesis is rejected and the alternative hypothesis is accepted, and conclude that there is an association between usefulness of pair programming and its adoption in future.
7.3 To test the association between the effective learning and level of satisfaction with pair programming H0: There is no association between level of satisfaction and whether they have learnt something new.
TABLE 4: Testing for association between proactive learning and level of satisfaction
Level of satisfaction
Learnt anything new
Low High
Low High Total
8 18
2 16
10 34
Value Asymp. Sig. (2-sided)
Pearson Chi-Square 3.787a .047
Continuity Correctionb 2.452 .110
Likelihood Ratio 4.510 .033
Linear-by-Linear Association 3.725 .050
Since the significance value is less than 0.05 [TABLE 4], we reject the null hypothesis and conclude there is association between level of satisfaction and whether they have learnt something new.
108 | P a g e VIII. CONCLUSIONS AND FUTURE WORK
Nowadays, the significance of collaborative skills has been realized in teaching and learning programming courses. A study in the context of understanding the student’s perception on pair programming was carried out.
In this paper we have presented results from the preliminary work of implementing Pair Programming as a learning methodology for second year post graduate computer applications students. Early results look promising and show that Pair Programming has a potential within the context of a programming laboratory course to enhance the development of both programming practice and collaborative skills. These early indicators have provided impetus to expand the benefits of collaborative learning to offer enhanced learning. A process framework for pair programming was developed. The experiment was conducted for the entire duration of a laboratory course and the collected data were analyzed using statistical tools. Most of the students have expressed in the questionnaire that they had a rewarding experience while practicing pair programming and wish to adopt it in the near future, while only few of the students who worked in a paired team gave negative comments.
IX. ACKNOWLEDGEMENTS
The authors would like to thank the Management of Kumaraguru College of Technology, Coimbatore, India for providing the necessary support to conduct the experiment and collect the necessary data for research. We would like to thank all the students who participated in the study. This work was funded by the All India Council for Technical Education (AICTE) Ref. No. 8023/RID/RPS-61/2011-12(Pvt).
REFERENCES
Journal Papers:
[1] Norsaremah Salleh, Emilia Mendes, and John C. Grundy (2011), Empirical Studies of Pair Programming for CS/SE Teaching in Higher Education: A Systematic Literature Review, IEEE Transactions on Software Engineering, Vol. 37, No. 4, 509-525.
[2] Silvana Faja (2011), Pair Programming as a team based learning activity: A Review of research, Issues in Information Systems, Vol.12, No.2, 207-216.
[3] V.Venkatesan, A.Sankar (2010), Adoption of Pair Programming in the Academic Environment with Different Degree of Complexity in StudentsPerspective– An Empirical Study, International Journal of Engineering Science and Technology Vol. 2(9), 4791-4800.
[4] Norsaremah Salleh (2008), A Systematic Review of Pair Programming Research –Initial Results, Proceedings of NZCSRSC 2008, Christchurch, New Zealand., 151-158.
[5] Tanja Bipp, Andreas Lepper, Doris Schmedding (2008), Pair Programming in Software Development Teams- An empirical study of its benefits, Science Direct Information and Software Technology, 231–240.
[6] Jari Vanhanen, Harri Korpi (2007), Experiences of Using Pair Programming in an Agile Project, Proceedings of the 40th Hawaii International Conference on System Sciences IEEE Computer Society, 1530-1605.
[7] Lui, K. M. and Chan, K. C. C. (2006), Pair Programming Productivity: Novice-Novice vs. Expert-Expert, International Journal of Human-Computer Studies, 64(9), 915-925.
109 | P a g e
[8] Muller, M. M. (2005), Two controlled experiments concerning the comparison of pair programming to peer Review, The Journal of Systems and Software, 78 (2), 166-179.
Books:
[9] L. Williams, R.R. Kessler, Pair Programming Illuminated (Addison Wesley 2003).
[10] Cockburn, A., Williams. L, The Costs and Benefits of Pair Programming (Extreme Programming Examined, Boston: Addison-Wesley 2002).
[11]Williams, L. A., Kessler, R. R, All I Ever Needed to Know about Pair Programming I Learned in Kindergarten
(Communications of the ACM, 2000).
[12] Beck. K, Extreme Programming Explained (Addison-Wesley 2000).