Article

Strengthening the Case for Pair-Programming

Authors:
To read the full-text of this research, you can request a copy directly from the authors.

Abstract

The software industry has practiced pair programming (two programmers working side by side at one computer on the same problem) with great success for years, but people who haven't tried it often reject the idea as a waste of resources. The authors demonstrate that using pair programming in the software development process yields better products in less time-and happier, more confident programmers

No full-text available

Request Full-text Paper PDF

To read the full-text of this research,
you can request a copy directly from the authors.

... The popularity of collaborative practices, such as pair programming (PP), have continuously grown along with the growing interest in implementing agile software development methodologies. The increased interest in PP has been linked with that joint problem solving outperforms individual capabilities [2] and that developers enjoy pairing more than working solo [3]. ...
... Last but not least, PP has also been found to be a practice that developers enjoy. Williams et al. [3] found that more than 90% stated that they enjoyed collaborative programming more than solo programming. ...
... Our findings support the earlier research emphasizing the importance of and consensus over good tools for RPP [19,20]. With respect to RPP benefits, our study confirms that engineers pair program because they enjoy it [3], especially as an important mean for socialization while WFH, which goes beyond RPP for quality and efficacy [11] and is not much discussed in existing literature. ...
... In addition, one of the greatest advantages is the ability to store Colab Notebooks in a Google Drive account and easily share them with others, allowing collaborators to leave comments in and edit the notebook. Given the apparent value of collaboration when learning programming [13,14,[25][26][27], Colab has significant potential as a tool to allow students to collaboratively code together, including in online spaces. However, as we shall observe, it is important to note that Colab currently has version control issues if multiple people are editing the code at the same time (see Sec. IV). ...
... Challenges with CL are particularly present in computation and programming [11][12][13]26], possibly because, when programming in a group, there can only be one "driver" (i.e., one who has control of the mouse/keyboard and is writing the design or code) at a time [13,26]. This leads instructors to be concerned that students programming in groups may not learn as much as they would if they completed the assignment alone [11,13], with non-drivers getting a "free ride" [11]. ...
... Challenges with CL are particularly present in computation and programming [11][12][13]26], possibly because, when programming in a group, there can only be one "driver" (i.e., one who has control of the mouse/keyboard and is writing the design or code) at a time [13,26]. This leads instructors to be concerned that students programming in groups may not learn as much as they would if they completed the assignment alone [11,13], with non-drivers getting a "free ride" [11]. ...
... Pair programming has primarily been studied with high school and university-aged students (e.g. Missiroli et al., 2016;Williams et al., 2000), but there is a growing interest in applying it with younger students since collaborative learning strategies are regularly used in elementary classrooms (e.g. Gillies & Boyle, 2010). ...
... In CS education, collaborative work often takes the form of pair programming. Traditional pair programming entails two students working on a single computer, each student has a designated role -the driver who has control of the input devices and the navigator who strategically guides the work (Williams et al., 2000). Both programmers are expected to talk continuously about their work, engage in collaborative problem solving, and to switch roles after a set amount of time or portion of the task has been completed. ...
... Both programmers are expected to talk continuously about their work, engage in collaborative problem solving, and to switch roles after a set amount of time or portion of the task has been completed. This pedagogical configuration has been used in industry (Canfora et al., 2007), in undergraduate classes (Williams et al., 2000), and in high school (Missiroli et al., 2016). As interest in CS education has moved to earlier grades, there is a growing interest in using pair programming with younger students (e.g. ...
Article
Full-text available
Background and Context Students’ self-efficacy toward computing affect their participation in related tasks and courses. Self-efficacy is likely influenced by students’ initial experiences and exposure to computer science (CS) activities. Moreover, student interest in a subject likely informs their ability to effectively regulate their learning in that domain. One way to enhance interest in CS is through using collaborative pair programming. Objective We wanted to explore upper elementary students’ self-efficacy for and conceptual understanding of CS as manifest in collaborative and regulated discourse during pair programming. Method We implemented a five-week CS intervention with 4th and 5th grade students and collected self-report data on students’ CS attitudes and conceptual understanding, as well as transcripts of dyads talking while problem solving on a pair programming task. Findings The students’ self-report data, organized by dyad, fell into three categories based on the dyad’s CS self-efficacy and conceptual understanding scores. Findings from within- and cross-case analyses revealed a range of ways the dyads’ self-efficacy and CS conceptual understanding affected their collaborative and regulated discourse. Implications Recommendations for practitioners and researchers are provided. We suggest that upper elementary students learn about productive disagreement and how to peer model. Additionally, our findings may help practitioners with varied ways to group their students.
... and wholly share the ownership of the work product. [35] The study [35] found that almost the only defects that made it through unit and functional testing were written by solo programmers, as opposed to pair programmers. [35] "A side effect of pair programming is a high order of staff cross training which removes additional long-term costs from development." ...
... and wholly share the ownership of the work product. [35] The study [35] found that almost the only defects that made it through unit and functional testing were written by solo programmers, as opposed to pair programmers. [35] "A side effect of pair programming is a high order of staff cross training which removes additional long-term costs from development." ...
... [35] The study [35] found that almost the only defects that made it through unit and functional testing were written by solo programmers, as opposed to pair programmers. [35] "A side effect of pair programming is a high order of staff cross training which removes additional long-term costs from development." [35] Since Truls would be programming mostly for iOS, and Erling and Toni for Android, we believed setting up mixed teams between the two platforms would help in ensuring everybody understands as much as possible about the entire product we were creating. ...
Thesis
Full-text available
The goal of this study is to examine if several smaller mobile applications work as well as one big application, from a usability and security perspective. To answer this, we developed a cross-platform SSO (Single Sign-On) library capable of providing a secure, invisible SSO experience. We also tested an implementation of inter-app navigation on 13 users and found that only 2/13 noticed noticed a difference when solving two tasks in one big app, as opposed to three different apps. Using the System Usability Scale on our inter-app navigation implementation, we found the average usability of the three small apps solution to be just 5 points below the big app.
... People who participate in pair programming through this method take on different computerrelated responsibilities (Campe et al., 2020). One of the partners types and develops code as a driver, while the other acts as navigator and monitors the driver to identify problems, defines possible strategies, checks for errors throughout the process, and suggests solutions for problems (Williams et al., 2000. By exchanging positions at specific times or when specific task pieces are completed, partners become active participants in the entire project (Tsan et al., 2020;Williams et al., 2000). ...
... One of the partners types and develops code as a driver, while the other acts as navigator and monitors the driver to identify problems, defines possible strategies, checks for errors throughout the process, and suggests solutions for problems (Williams et al., 2000. By exchanging positions at specific times or when specific task pieces are completed, partners become active participants in the entire project (Tsan et al., 2020;Williams et al., 2000). In this way, both partners become involved in the brainstorming process throughout the activities . ...
... Pair programming is an approach where two students, one navigator and one driver, program collaboratively on a computer. The literature suggests that the collaborative programming approach is more effective than working alone (Williams et al., 2000. The navigator examines all the code written by the driver and thinks about strategic directions and improvements. ...
Article
The pair programming approach is used to overcome the difficulties of the programming process in education environments. In this study, the interaction sequences during the paired programming of preservice teachers was investigated. Lag sequential analysis were used to explore students’ behavioral patterns in pair programming. The participants of the study consist of 14 students, seven pairs enrolled in a Programming Languages course. The findings indicate that there are significant behavioral learning sequences. During the program development process, students hesitated to create an algorithm and to improve an existing one while proposing the next step. In addition, they constantly waited for approval. Collaborative behaviors such as giving and receiving feedback and helping other partners were less observed in females. In addition, significant sequential driver and navigator behaviors were presented. The findings of the study have important implications for instructors and designers when using a pair programming approach in teaching programming. In the future, programming instruction environments can be designed by considering the learner behaviors that are presented in this study.
... People who participate in pair programming through this method take on different computerrelated responsibilities (Campe et al., 2020). One of the partners types and develops code as a driver, while the other acts as navigator and monitors the driver to identify problems, defines possible strategies, checks for errors throughout the process, and suggests solutions for problems (Williams et al., 2000. By exchanging positions at specific times or when specific task pieces are completed, partners become active participants in the entire project (Tsan et al., 2020;Williams et al., 2000). ...
... One of the partners types and develops code as a driver, while the other acts as navigator and monitors the driver to identify problems, defines possible strategies, checks for errors throughout the process, and suggests solutions for problems (Williams et al., 2000. By exchanging positions at specific times or when specific task pieces are completed, partners become active participants in the entire project (Tsan et al., 2020;Williams et al., 2000). In this way, both partners become involved in the brainstorming process throughout the activities . ...
... Pair programming is an approach where two students, one navigator and one driver, program collaboratively on a computer. The literature suggests that the collaborative programming approach is more effective than working alone (Williams et al., 2000. The navigator examines all the code written by the driver and thinks about strategic directions and improvements. ...
Article
This study examines the improvement of pre-service teachers’ computational thinking skill levels through an educational technology course redesigned within the computational thinking context. 27 pre-service teachers from the Literacy Education Program enrolled in the Instructional Technologies and Material Development course in a public university in Turkey. Pre-service teachers engaged in some structured activities throughout the course and they were asked to complete a final project. Pre and post-survey results showed that pre-service teachers’ algorithmic thinking skills and computational thinking skills in general were improved after the course. Analysis of final projects also showed that pre-service teachers were able to use their problem solving, algorithmic thinking, and collaborative skills. However, they had difficulty in using their critical thinking skills and creativity. Findings have implications for the design of an educational technology course that pre-service teachers comprehend and practice computational thinking concepts.
... The central authority wants to improve the situation by building teams of two agents where, due to a daily extensive cooperation, one teaches the other the missing qualification. For instance, a realization of this is the concept of pair programming that also has other benefits besides knowledge sharing (Williams, Kessler, Cunningham, & Jeffries, 2000). ...
... This approach is justified when the burden of sharing is neutralized by its advantages. Indeed, in our knowledge sharing example a hassle of cooperation is often compensated by a better working experience or higher quality outcomes (as shown by Williams et al., 2000). Note that such complicated mutual dependencies that would be extremely hard to describe formally form a natural field for our approach. ...
Article
Given an initial resource allocation, where some agents may envy others or where a different distribution of resources might lead to a higher social welfare, our goal is to improve the allocation without reassigning resources. We consider a sharing concept allowing resources being shared with social network neighbors of the resource owners. More precisely, our model allows agents to form pairs which then may share a limited number of resources. Sharing a resource can come at some costs or loss in utility. To this end, we introduce a formal model that allows a central authority to compute an optimal sharing between neighbors based on an initial allocation. Advocating this point of view, we focus on the most basic scenario where each agent can participate in a bounded number of sharings. We present algorithms for optimizing utilitarian and egalitarian social welfare of allocations and for reducing the number of envious agents. In particular, we examine the computational complexity with respect to several natural parameters. Furthermore, we study cases with restricted social network structures and, among others, devise polynomial-time algorithms in path- and tree-like (hierarchical) social networks.
... Over this period, computer programming researchers and instructors have suggested several strategies and specific skills that could be used to address this challenge. The teaching and learning strategies include explicit step-by-step strategies (Ko et al., 2019;LaToza et al., 2020;Xie et al., 2018), peer instruction , modelling (Middendorf & Pace, 2004;Wood et al., 1976), pair programming Williams et al., 2000), and use of worked examples (Griffin, 2015;Sweller et al., 2011). The specific skills include doodling, walkthroughs, pattern recognition (Fitzgerald, Simon & Thomas, 2005), the teaching of strategic skills (O'Dell, 2017), the teaching of cognitive skills (Ko & Uttl, 2003;Von Mayrhauser & Vans, 1996), and the teaching of (meta)cognitive processes/strategies (Khomokhoana & Nel, 2020;Preece et al., 2015). ...
... This is a genuine concern primarily because students usually work in collaboration, and copying each other's work is inevitable. One common pedagogical strategy in computer programming called pair programming Williams et al., 2000) encourages this type of collaboration. Therefore, this suggests that using more than one assessment technique could be recommended as a viable solution. ...
Article
Full-text available
Computer programming continues to be challenging despite numerous strategies and skills that researchers and instructors have shared over four decades. Using explicit instruction (EI) to help students learn and better understand computer programming presents a promising avenue for tackling this challenge. This paper describes a study that implemented the principles of EI in a computer programming module. The aim of this study was to identify elements to consider in EI, and opportunities and challenges presented by EI interventions in teaching computer programming to postgraduate Computer Science students. Collected data was analysed through thematic analysis, and the results reveal nine major opportunities and five main challenges related to EI. The study followed an integrated methodological approach where narrative data was collected through observations and asking questions. This study informs how improvements can be made in the future teaching of computer programming to create a better sense of quality and robustness.
... PP is a well-known technique in software development, where two programmers work together on a single computer to develop software [6,22]. Such practice has improved software quality, learning improvement, and developer productivity. ...
... Such practice has improved software quality, learning improvement, and developer productivity. This was demonstrated with a qualitative meta-analysis of existing studies conducted by Salge and Berente [16] and the controlled experiment performed by Williams et al. [22]. In recent years, PP has also been applied in educational settings, where it has been proven to enhance student learning and engagement. ...
... An agent may "envy" another agent because the other agent has some special qualification. The central authority wants to improve the situation by building teams of two agents where, due to a daily extensive cooperation, one teaches the other the missing qualification (for instance, a realization of this is the concept of pair programming that also has other benefits besides knowledge sharing (Williams et al. 2000)). ...
... This approach is justified when the burden of sharing is neutralized by its advantages. Indeed, in our knowledge sharing example a hassle of cooperation is often compensated by a better working experience or higher quality outcomes (as shown by Williams et al. (2000)). Note that such complicated mutual dependencies that would be extremely hard to describe formally form a natural field for our approach. ...
Article
Full-text available
Given an initial resource allocation, where some agents may envy others or where a different distribution of resources might lead to higher social welfare, our goal is to improve the allocation without reassigning resources. We consider a sharing concept allowing resources being shared with social network neighbors of the resource owners. To this end, we introduce a formal model that allows a central authority to compute an optimal sharing between neighbors based on an initial allocation. Advocating this point of view, we focus on the most basic scenario where a resource may be shared by two neighbors in a social network and each agent can participate in a bounded number of sharings. We present algorithms for optimizing utilitarian and egalitarian social welfare of allocations and for reducing the number of envious agents. In particular, we examine the computational complexity with respect to several natural parameters. Furthermore, we study cases with restricted social network structures and, among others, devise polynomial-time algorithms in path- and tree-like (hierarchical) social networks.
... In general, software practitioners have several means to detect bugs. These can range from QA practices such as code review Kononenko et al. (2016); Mäntylä and Lassenius (2008); Bacchelli and Bird (2013), and inspection to different testing approaches, and even development methodologies such as pair programming Williams et al. (2000); Nawrocki and Wojciechowski (2001); Sun et al. (2015), and Test Driven Development (TDD) Bhat and Nagappan (2006); Martin (2007); Aniche et al. (2013); Rafique and Mišić (2012). When a bug is detected, it is common for the development teams to consider the most severe/important bugs first which helps them to prevent extreme consequences. ...
... In the future, they will apply the Myer-Briggs personality test before pair programming. (Nagappan et al., 2003;Hanks et al.,2004;Williams et al.,2000) Regarding Williams and Kessler's experiments, pair programming plays a key role to increase the quality of software, and decrease the time of the development process, teamwork, and knowledge transfer (Williams and Kessler, 2002). Pair programming helps software engineers to be social, increase communication skills, and make the development process more pleasant. ...
Thesis
Full-text available
Agile development practices have been in widespread use in many software companies since their introduction. While the principles clearly state that face-to-face communication is the best way to convey information to other team members. However, the global pandemic of 2020 has forced the practices to be applied online instead of face-to-face. The scope of this study is to analyze the effect of the Agile methodologies on software education projects. To analyze the effect, several Agile practices were applied to a junior-level software engineering course which includes a team project assignment. The course had 59 students who formed 15 teams in the Fall semester for the 2021-2022 academic year. Two of these teams have volunteered to participate in the application of Agile practices that are based on the Scrum methodology. The purpose is to compare these two teams with other teams who have not applied any Agile practices but followed the fundamental prescriptive process that is made up of specification, design, implementation, and testing activities. With the differences between both these groups, this study expects to reveal Agile practices are suitable to applying to course projects. The following practices are incorporated into the two volunteer teams: Sprint planning meetings, Daily meetings, Weekly meetings, Retrospective meetings, Pair programming sessions, Code review sessions. At the end of the semester, two surveys that focus on the effects of the Agile practices and performance have been conducted of survey and the results show that the customized iv Agile practices are suitable to apply in university education.
... In the latter case, unlike in solo programming, two programmers work together on the same programming task using one computer and one keyboard. Pair programming is a practice in which two programmers sitting side by side using only one computer work collaboratively on the design, algorithm, code, or test [1]. One of them is the "driver" who is responsible for typing the code and has control over resources such as computer, mouse, and keyboard. ...
Article
Full-text available
This study assesses the relative effectiveness of solo and pair programming instructional strategies on students' academic achievement in the Visual-Basic.Net Computer Programming Language. Two research questions and three null hypotheses guided the study. The sample comprised 68 subjects distributed over the three treatment groups (27 solo programmers, 24 pair programmers, and 17 conventional programmers) from three hundred computer science students of the Federal College of Education (Technical), Akoka, Yaba, Lagos State, Nigeria. The Visual-Basic.Net Achievement Test (VAT) was used to collect data for both the pre-and post-tests. The VAT test was administered to all 68 subjects in the three groups, first as pre-test and after treatment as post-test. Mean and standard deviations were used to answer the two research questions while ANCOVA and multiple comparisons were used in testing the three null hypotheses. The results of the analyses indicate that: (i) the experimental groups performed better than the control group, (ii) the treatment appeared to be more effective among male students than their female counterparts, (iii) the main effects of treatment and gender as well as the interaction effects of treatment and gender were not statistically significant.
... Many program comprehension environments have been built and explored (Williams et al. 2000). The focus has been on computer environments that display code in a unique fashion. ...
Article
Full-text available
Virtual reality (VR) is an emerging technology used in various domains such as medicine, psychotherapy, architecture, and gaming. Recently, software engineering researchers have started to explore virtual reality as a tool for programmers. However, few studies examine source code comprehension in VR. This paper explores the human experience of comprehending source code in VR and compares it to source code comprehension in a desktop environment. We conducted a study with 26 graduate student programmers. We measured actual productivity, perceived productivity and used the NASA Task Load Index (TLX) survey to measure various factors such as mental demand, physical demand, temporal demand, performance, effort, and frustration. We found that the programmers experienced more physical demand, effort, and overall task load when reading and comprehending code in VR. However, we did not observe any statistically significant differences in the programmers’ measured productivity or perceived productivity between VR and desktop comprehension.
... In particular, feedback opportunities can be included into classroom and lab sessions. For example, both peer instruction [13] and pair programming [90] create opportunities for reflection. In peer instruction, the reflection is partially guided by the teacher responsible for the peer instruction questions, while in pair programming, students interact and reflect on the program that is being worked on. ...
... In general, software practitioners have several means to detect bugs. These can range from QA practices such as code review [50,56,14], and inspection to different testing approaches, and even development methodologies such as pair programming [109,66,95], and Test Driven Development (TDD) [18,57,10,78]. When a bug is detected, it is common for the development teams to consider the most severe/important bugs first which helps them to prevent extreme consequences. ...
Preprint
Full-text available
In the past couple of decades, significant research efforts are devoted to the prediction of software bugs (i.e., defects). These works leverage a diverse set of metrics, tools, and techniques to predict which classes, methods, lines, or commits are buggy. However, most existing work in this domain treats all bugs the same, which is not the case in practice. The more severe the bugs the higher their consequences. Therefore, it is important for a defect prediction method to estimate the severity of the identified bugs, so that the higher severity ones get immediate attention. In this paper, we provide a quantitative and qualitative study on two popular datasets (Defects4J and Bugs.jar), using 10 common source code metrics, and also two popular static analysis tools (SpotBugs and Infer) for analyzing their capability in predicting defects and their severity. We studied 3,358 buggy methods with different severity labels from 19 Java open-source projects. Results show that although code metrics are powerful in predicting the buggy code (Lines of the Code, Maintainable Index, FanOut, and Effort metrics are the best), they cannot estimate the severity level of the bugs. In addition, we observed that static analysis tools have weak performance in both predicting bugs (F1 score range of 3.1%-7.1%) and their severity label (F1 score under 2%). We also manually studied the characteristics of the severe bugs to identify possible reasons behind the weak performance of code metrics and static analysis tools in estimating the severity. Also, our categorization shows that Security bugs have high severity in most cases while Edge/Boundary faults have low severity. Finally, we show that code metrics and static analysis methods can be complementary in terms of estimating bug severity.
... In particular, feedback opportunities can be included into classroom and lab sessions. For example, both peer instruction [13] and pair programming [90] create opportunities for reflection. In peer instruction, the reflection is partially guided by the teacher responsible for the peer instruction questions, while in pair programming, students interact and reflect on the program that is being worked on. ...
Preprint
This article explores the natural language generation capabilities of large language models with application to the production of two types of learning resources common in programming courses. Using OpenAI Codex as the large language model, we create programming exercises (including sample solutions and test cases) and code explanations, assessing these qualitatively and quantitatively. Our results suggest that the majority of the automatically generated content is both novel and sensible, and in some cases ready to use as is. When creating exercises we find that it is remarkably easy to influence both the programming concepts and the contextual themes they contain, simply by supplying keywords as input to the model. Our analysis suggests that there is significant value in massive generative machine learning models as a tool for instructors, although there remains a need for some oversight to ensure the quality of the generated content before it is delivered to students. We further discuss the implications of OpenAI Codex and similar tools for introductory programming education and highlight future research streams that have the potential to improve the quality of the educational experience for both teachers and students alike.
... In a typical programming educational session, it is commonplace to work in pairs in a computer lab setting. Often, one of the students will be hands-on, (typing) while the other sits next to the driver discussing solutions hands-off, then switching places (Williams, Kessler, Cunningham, & Jeffries, 2000). We artificially imposed fixed hands-on or hands-off roles upon the participants, randomly assigned. ...
Thesis
Full-text available
Computer programming is fast becoming a required part of School curricula, but students find the topic challenging and university dropout rates are high. Observations suggest that hands-on keyboard typing improves learning, but quantitative evidence for this is lacking and the mechanisms are still unclear. Here we study neural and behavioral processes of programming in general, and Hands-on in particular. In project 1, we taught naïve teenagers programming in a classroom-like session, where one student in a pair typed code (Hands-on) while the other participated by discussion (Hands-off). They were scanned with fMRI 1-2 days later while evaluating written code, and their knowledge was tested again after a week. We find confidence and math grades to be important for learning, and easing of intrinsic inhibitions of parietal, temporal, and superior frontal activation to be a typical neural mechanism during programming, more so in stronger learners. Moreover, left inferior frontal cortex plays a central role; operculum integrates information from the dorsal and ventral streams and its intrinsic connectivity predicts confidence and long-term memory, while activity in Broca’s area also reflects deductive reasoning. Hands-on led to greater confidence and memory retention. In project 2, we investigated the impact of feedback on motivation and reaction time in a rule-switching task. We find that feedback targeting personal traits increasingly impair performance and motivation over the experiment, and we find that activity in precentral gyrus and anterior insula decrease linearly over time during the personal feedback condition, implicating these areas in this effect. These findings promote hands-on learning and emphasize possibilities for feedback interventions on motivation. Future studies should investigate interventions for increasing Need for Cognition, the relationship between computer programming and second language learning (L2), and the role of explicit verbalization of knowledge for successful coding, given the language-like processing of code.
... Within the pairs, each learner has different responsibilities (Campe et al., 2020): driver and navigator. The driver develops code while the navigator observes the driver, identifies any problems, develops a strategy, and comes up with solutions for any errors (Williams et al., 2000). Through the process, the pairs swap responsibilities so that both partners become involved in the brainstorming process (Tsan et al., 2020;Wei et al., 2021). ...
Article
This study aims to reveal the opinions and experiences of undergraduate students regarding a pair programming method used in their programming course. Qualitative and quantitative methods were used to collect data for the study. The pair programming method required students to work in pairs throughout the semester. The participants of the study consist of 29 sophomores from computer education and instructional technologies department enrolled on the programming languages course. Collaboration Experiences, Team Member Evaluation, and Self-Assessment forms and a semi-structured interview form were used to collect data. The findings indicate that all the students were positive about the lessons. According to the students, collaboration within pairs was carried out successfully. At the end of the course, students stated that the lessons were sufficient for coding, and they achieved a good performance. In addition, the students were satisfied with the collaboration of their partner and the opportunities they had to improve their communication skills thorough pair programming. In addition, students emphasized that pair programming reduced the instructor’s workload. However, a few students also stated that the process had some limitations. The findings of the study will be useful particularly for instructors while designing programming instruction.
... Two individuals hence work to achieve the same aim, share resources, and also share knowledge. This makes solving programming problems easier and faster [40]. Various benefits of pair programming have been reported so far. ...
... Pair programming, for example, is a practice that involves two developers collaborating as a single individual on the design, coding, and testing of the same programming task. This practice has been shown to be productive and to render higher-quality code than either developer may produce alone (Lui & Chan, 2006;Nosek, 1998;Williams, 2001;Williams, Kessler, Cunningham, & Jeffries, 2000;Williams & Upchurch, 2001), especially with novice programmers or challenging programming problems (Lui & Chan, 2006), and positive effects have been found in educational contexts as well (Braught, Wahls, & Eby, 2011;Tunga & Tokel, 2018;Umapathy & Ritzhaupt, 2017). Another popular practice involves explaining line by line what a nonworking piece of code is supposed to do. ...
Article
Full-text available
There is growing interest in teaching computer science and programming skills in schools. Here we investigated the efficacy of peer tutoring, which is known to be a useful educational resource in other domains but never before has been examined in such a core aspect of applied logical thinking in children. We compared (a) how children (N = 42, age range = 7 years 1 month to 8 years 4 months) learn computer programming from an adult versus learning from a peer and (b) the effect of teaching a peer versus simply revising what has been learned. Our results indicate that children taught by a peer showed comparable overall performance—a combination of accuracy and response times—to their classmates taught by an adult. However, there was a speed–accuracy trade-off, and peer-taught children showed more exploratory behavior, with shorter response times at the expense of lower accuracy. In contrast, no tutor effects (i.e., resulting from teaching a peer) were found. Thus, our results provide empirical evidence in support of peer tutoring as a way to help teach computer programming to children. This could contribute to the promotion of a widespread understanding of how computers operate and how to shape them, which is essential to our values of democracy, plurality, and freedom.
Article
Real-time collaborative programming (RCP) entails developers working simultaneously, regardless of their geographic locations. RCP differs from traditional asynchronous online programming methods, such as Git or SVN, where developers work independently and update the codebase at separate times. Although various real-time code collaboration tools (e.g., Visual Studio Live Share , Code with Me , and Replit ) have kept emerging in recent years, none of the existing studies explicitly focus on a deep understanding of the processes or experiences associated with RCP. To this end, we combine interviews and an email survey with the users of Visual Studio Live Share , aiming to understand (i) the scenarios, (ii) the requirements, (ii) and the challenges when developers participate in RCP. We find that developers participate in RCP in 18 different scenarios belonging to six categories, e.g., pair programming , group debugging , and code review . However, existing users’ attitudes toward the usefulness of the current RCP tools in these scenarios were significantly more negative than the expectations of potential users. As for the requirements, the most critical category is live editing , followed by the need for sharing terminals to enable hosts and guests to run commands and see the results, as well as focusing and following , which involves “following” the host’s edit location and “focusing” the guests’ attention on the host with a notification. Under these categories, we identify 17 requirements, but most of them are not well supported by current tools. In terms of challenges, we identify 19 challenges belonging to seven categories. The most severe category of challenges is lagging followed by permissions and conflicts . The above findings indicate that the current RCP tools and even collaborative environment need to be improved greatly and urgently. Based on these findings, we discuss the recommendations for different stakeholders, including practitioners, tool designers, and researchers.
Chapter
Medical Device Software (MDS) defects have caused death of patients and continue to be the major cause of recalls of medical devices in the US and Europe. Despite various approaches proposed to address defects, dealing with defects in MDS is an increasingly difficult task as MDS has become more complex to support a growing number of functions. To increase quality in any software development project, it is essential that defects are identified and addressed quickly in the early stages of the software development life cycle. Agile methods have been advocated to increase software quality by minimising defects through their agile practices. However, agile methods on their own are deficient in satisfying the regulatory requirements for the MDS domain. Instead, the common approach is to integrate agile practices into the plan driven methods. Consequently, frameworks have been developed to help developers in the MDS domain to accrue the benefits of agile development while fulfilling regulatory requirements. Despite the adoption of agile practices in MDS development, it is still unclear as to which agile practice(s) is effective and how it is applied to address MDS defects. The purpose of this research is to identify agile practices that can assist in addressing defects in MDS development. This will help MDS developers to select the appropriate agile practice(s) to address defects.KeywordsMedical Device SoftwareAgile PracticesMedical Device Software DefectsSoftware FaultsMedical Device Recalls
Book
Full-text available
Czy sztuczna inteligencja pozbawia nas pracy? Algorytmy przejmują władzę nad światem? Czy big data sprawia, że jesteśmy bezustannie inwigilowani? Czy ogromna ilość danych zastępuje ekspertów i naukowców? Cokolwiek sądzimy na te tematy, jedno jest pewne – istnieje heterogeniczne środowisko ludzi, zajmujących się tzw. „sztuczną inteligencją” czy tzw. „big data” od strony technicznej i metodologicznej. Pole ich działania nazywane jest data science, a oni data scientists. Ta książka poświęcona jest właśnie im, polskiemu środowisku data science. Jest to pierwsza monografia socjologiczna dotycząca data science i pierwsza praca w naukach społecznych, w której data science zostało zbadane jako społeczny świat w rozumieniu Adele E. Clarke. To podejście pozwala spojrzeć na data science, nazwane dekadę wstecz w Harvard Business Review „najseksowniejszym zawodem XXI w.”, zarówno z perspektywy jego uczestników jak i z lotu ptaka, w relacji do akademii, biznesu, prawa, mediów czy polityki.
Article
With the increasing popularity of Open‐Source Software (OSS), the number of GitHub issues reported daily in these OSS projects has been growing rapidly. To resolve these issues, developers need to spend time and effort in debugging and fixing these issues. Meanwhile, a recent approach shows that similar bugs exist across different projects, and one could use the GitHub issues from a different project for finding new bugs for a related project. To locate similar bugs for our approach, we first conduct a study of similar bugs in GitHub. Our study redefines similar bugs as bugs that share the (1) same libraries, (2) same functionalities, (3) same reproduction steps, (4) same configurations, (5) same outcomes, or (6) same errors. Moreover, our study revealed the usefulness of similar bugs in helping developers to find more contexts about the bug and fixing. Based on our study, we design CrossFix, a tool that automatically suggests relevant GitHub issues based on an open GitHub issue. The suggested GitHub issues may contain solutions written in natural language or pull requests that help developers in resolving the given issue. Our evaluation on 249 open issues from Java and Android projects shows that CrossFix could suggest similar bugs to help developers in debugging and fixing.
Article
Full-text available
Teaching programming in an efficient and effective method has been the most difficult subject in the world of computing for the last couple of decades. Aside from a lack of laboratory equipment, the most prevalent issues are the lengthy time it takes to understand a problem, devising algorithms, writing coding, syntax, and semantic complexity of the programming language. Because of the wide range of students' backgrounds, misconceptions about the course, traditional classroom teaching methodology, and the limited allotted time available to cover the course, it is extremely difficult for a teacher to go beyond the fundamental concepts that impede the development of students' problem-solving abilities. The major goal of thisstudy is to assist students to become better programmers by comprehending code and implementing applications for real-world problems.
Article
With the growing desire to incorporate data science and informatics into STEM curricula, there is an opportunity to integrate research-based software and tools (e.g., Python) within existing pedagogical methods to craft new, accessible learning experiences. We show how the open-source Jupyter Book software can achieve this goal by creating a digital, interactive textbook compiled from Jupyter notebooks, which are already commonplace in research. Using Jupyter Book, we design an open-source, introductory materials informatics research curriculum where the Python programming exercises are supplemented with prose, graphics, slides, and discussion questions, all of which are embedded into a uniform web interface for streamlined access. Interactive programming capabilities, enabled through the JupyterHub cloud infrastructure, provide opportunities in these digital spaces for students to interrogate the code, test their own hypotheses, and deepen their comprehension. These authentic learning experiences demonstrate the broad utility of the Jupyter ecosystem in sustaining the growth of materials informatics education. © Published 2022 by American Chemical Society and Division of Chemical Education, Inc.
Article
Full-text available
Background Group size is one of the important factors that affect collaborative learning, however, there is no consensus in the literature on how many students should the groups be composed of during the problem‐solving process. Objectives This study investigated the effect of group size in a K‐12 introductory Artificial Intelligence course by comparing the students' cognitive load, learning motivation, collaborative problem‐solving quality, and in‐classroom interaction between two‐ and three‐student groups. Methods Forty‐eight high school students were randomly assigned to two kinds of groups (i.e., the two‐student group, and the three‐student group, each consisting of 24 students). During the experiment, Xiaofei robots were used to teach the theoretical and practical content of five AI topics over 6 weeks for 1.5 h each week. Results The ANOVA results indicated that group size mattered in the AI course, the two‐student group was more effective in terms of enhancing students' learning motivation and collaborative problem‐solving quality, as well as imposing more cognitive load than the three‐student group. The advantage was more obvious in the practical problem context. The Lag Sequential Analysis results indicated that more collaborative learning behavioural sequences existed in the two‐student group than in the three‐student groups. Contribution This research provides empirical evidence and potential guidance for group design in Artificial Intelligence Education. Although group size did not affect students' learning achievement, it affected learning motivation, cognitive load, and problem‐solving quality and processes. Two‐student groups work better than three‐student groups in the AI course.
Article
Collaborative programming is a co-operative effort of 2 teams to n-teams to share knowledge, synergize and produce better code. Pairing, Swarming and Mobbing are the standard of agile technology which are adapted by many organizations. In this paper, software development is carried out using Pair Programming(PP) in a medium sized organization developing mobile applications using android is presented. The first method uses the Programmers Competency Matrix (PCM) based on Blooms Taxonomy to assess the skill of the programmers. Since, the pairs are chosen randomly in the PCM method, a novel algorithm is proposed to pair the programmers by Programmer Ranking Algorithm (PRA). The two proposed methods are evaluated in an organization and the results are validated. The results prove that PP definitely improves the software development process than when it is developed by individual programmers. The PRA methodology outperforms the PCM because the PRA chooses the pair wisely using the programming skills of the programmer.
Article
The article provides an overview of publications on Agile methodology. In the literature Agile is generally understood to mean agile software development with regular feedback, ability to respond promptly to various changes and adjust the initial vision of the project at almost any moment. The paper reviews the values and basic principles of Agile, provides comparative characteristics of agile and traditional approaches to software development, describes the most popular Agile methods (Scrum, Kanban, Scrumban, eXtreme Programming (XP), Lean development). The review established that Agile is not only considered in terms of software development but also the project management approach. In addition, there are practices of implementing Agile in public administration. However, the authors point to IT project management problems in the public sector. Challenges relate to serious deficiencies in public procurement of software. The authors conclude that it is recommended to apply «Agile contracts» in public procurement. The Charter for the Agile Nations establishes a commitment to a more agile approach to legal regulation and will facilitate the implementation of Agile in public administration. Based on conducted analysis of publications the inference was made that Agile can also be viewed from a personnel management perspective. It has been suggested that implementation of Agile methodology to human resources management is a promising area and emerging trend of Agile development.
Article
his paper describes a qualitative study of how undergraduate students majoring in Information Technology perceive the effectiveness and evaluate the learning experience of pair-programming. The phenomenographic research approach was used to analyze student interviews and revealed 4 categories of descriptions: Effective Problem Solving, Participation, Enjoyment and Coding. Pair-programming as a teaching methodology was commonly perceived as a positive experience. The resulting outcome space maps a logical hierarchy of students’ conceptions of reality (categories of description). Findings of this research identify the factors that affect student engagement in a problem-solving process and can be used as a guiding principle on how to improve students’ learning experience of computer programming.
Article
The COVID-19 pandemic raised the need to examine online learning methods also in young children. This study examined elementary school children’s performance and attitudes during and toward an online programming learning activity utilizing the pair-programming Agile method that may foster 21st-century skills, including collaboration and computational thinking. Forty 4th–6th grade children with basic programming knowledge of Scratch were randomly assigned to either a pair-programming or solo-programming condition. Overall, children in both conditions enjoyed the online learning activity and completed it successfully. In particular, pair-programming seemed to entail an extra benefit to girls who generally preferred working in pairs. Nevertheless, children in the pair condition took longer to complete all tasks, perceived the third task, which was completed individually, as more difficult, and were less active when their partner was more competent. Implications for post-COVID-19 learning are discussed.
Conference Paper
Full-text available
The purpose of this study was to explore whether pair learning had a positive effect on robot education, and what problems should be paid attention to when using pair learning in project-based learning. We used the seventh and eighth grade students (a total of 42 participants) as the study object, through pairing way to carry out project-based learning. This study included three projects: traffic lights, maze, and line patrol. In the process of the study, teachers, assistants and students recorded the learning process according to the form designed in advance. And in the process of the project, teachers dynamically controlled the matching situation and project progress. The study results revealed that - pair learning had a positive effect on robot education, but the pair method need to be designed more precise; The difficulty of the project could be appropriately reduced to allow for sufficient time of discussion and role exchange.
Conference Paper
View Video Presentation: https://doi.org/10.2514/6.2022-2248.vid The use of geometric models is becoming central in the analysis and design of complex configurations, such as aerospace vehicles. Traditionally these models have been developed by a single engineer, working alone because of the way the modeling tools have been designed. While collaboration is possible via file sharing or screen sharing, none of the traditional design environments facilitate real-time collaboration. A similar problem in software development (programming) has been fixed with the introduction of pair-programming, wherein two programmers sit side by side, and work together. Pair programming has been shown to greatly improve the software development process, while only incurring a small cost penalty. Herein, the pair-programming concepts have been applied to the development of geometric models in the Engineering Sketch Pad. The efficacy of this new approach is demonstrated via two case studies.
Article
Full-text available
In order to promote the practice of co-creation, a real-time collaboration (RTC) version of the popular block-based programming (BBP) learning environment, MIT App Inventor (MAI), was proposed and implemented. RTC overcomes challenges related to non-collocated group work, thus lowering barriers to cross-region and multi-user collaborative software development. An empirical study probed into the differential impact on self-efficacy and collaborative behavior of learners in the environment depending upon their disciplinary background. The study serves as an example of the use of learning analytics to explore the frequent behavior patterns of adult learners, in this case specifically while performing BBP in MAI integrated with RTC. This study compares behavior patterns that are collaborative or individual that occurred on the platform, and investigates the effects of collaboration on learners working within the RTC depending on whether they were CS-majors or not. We highlight advantages of the new MAI design during multi-user programming in the online RTC based on the connections between the interface design and BBP as illustrated by two significant behavior patterns found in this instructional experiment. First, the multi-user programming in the RTC allowed multiple tasks to happen at the same time, which promoted engagement in joint behavior. For example, one user arranged components in the interface design while another dragged blocks to complete the program. Second, this study confirmed that the Computer Programming Self-Efficacy (CPSE) was similar for individual and multi-user programming overall. The CPSE of the homogeneous CS-major groups engaged in programming within the RTC was higher than that of the homogeneous non-CS-major groups and heterogeneous groups. There was no significant difference between the CPSE of the homogenous non-CS group and the CPSE of the heterogeneous groups, regardless of whether they were engaged in individual programming or collaborative programming within their groups. The results of the study support the value of engaging with MAI collaboratively, especially for CS-majors, and suggest directions for future work in RTC design.
Article
Full-text available
This paper introduces a new approach — Distributed Cognition — to viewing collaborative activities and analyzes a pair of programmers performing a perfective software maintenance task in accordance with this approach. Distributed Cognition takes as its unit of analysis a complex cognitive system: collections of individual and artifacts that participate in the performance of a task. The external structures exchanged by the agents of complex cognitive systems comprise its "mental" state and unlike individual cognition, where mental states are inaccessible, these states are observable and available for direct analysis. Through an analysis of these structures, their trajectories through the system, and their transformations, it will be demonstrated that complex cognitive systems engaged in software development tasks possess cognitive properties distinct from those of individual programmers. These properties are important for the system's successful completion of the task, yet they are ignored in studies of individual programmers. Studies of system level cognitive properties, when combined with existing research on the cognitive properties of individual programmers, should lead to a more comprehensive understanding of the process of software development. Before this integration can be made, however, these system level properties must be uncovered. The following research is a step in this direction.
Article
Full-text available
This article presents a technical opinion in the case of collaborative programming for a large, complex system, in which two programmers are working jointly on the same algorithm and code. A field experiment was conducted using experienced programmers who worked on a challenging problem important to their organization, in their own environments, and with their own equipment. Findings revealed that all the teams outperformed the individual programmers, enjoyed the problem-solving process more, and had greater confidence in their solutions. Several aspects of this experiment make the results significant. First, there may be a tendency to dismiss results using small groups. Questions may arise at the value of these results if the collaborators do not perform twice as well as individuals, at least in the amount of time spent. The article concludes that the crunch-time information systems development will demand innovative ways to produce high-quality systems in a short time, with companies increasingly introducing new products. This rare experimental research is phenomenon considering the luxury of using collaborative programming while many companies are experiencing shortages of experienced programmer/analysts.
Article
Abstract All I Really Need to Know I Learned in Kindergarten By Robert Fulghum (Fulghum 1988) Share everything. Play fair. Don’t hit people. Put things back where you found them. Clean up your own mess. Don’t take things that aren’t yours. Say you’re sorry when,you hurt somebody. Wash your hands before you eat. Flush. Warm cookies and cold milk are good for you. Live a balanced life – learn some,and think some,and draw and paint and sing and
Article
The book, The Mythical Man-Month, Addison-Wesley, 1975 (excerpted in Datamation, December 1974), gathers some of the published data about software engineering and mixes it with the assertion of a lot of personal opinions. In this presentation, the author will list some of the assertions and invite dispute or support from the audience. This is intended as a public discussion of the published book, not a regular paper.
All I Ever Needed to Know About Pair Programming I Learned in Kindergarten The Wisdom of Teams: Creating the High- Performance Organization: Harper Business
  • J O Coplien
  • L A Williams
  • R R Kessler Flor
  • E L Hutchins
J. O. Coplien, " A Development Process Generative Pattern Language, " in Pattern Languages of Program Design, James O. Coplien and Douglas C. Schmidt, Ed. Reading, MA: Addison-Wesley, 1995, pp. 183-237. [4] L. A. Williams and R. R. Kessler, " All I Ever Needed to Know About Pair Programming I Learned in Kindergarten, " in Communications of the ACM, vol. 43, no. 5, 2000. [5] T. DeMarco and T. Lister, Peopleware. New York: Dorset House Publishers, 1977. [6] J. R. Katzenbach and D. K. Smith, The Wisdom of Teams: Creating the High- Performance Organization: Harper Business, 1994. [7] N. V. Flor and E. L. Hutchins, " Analyzing Distributed Cognition in Software Teams: A Case Study of Team Programming During Perfective Software Maintenance, " presented at Empirical Studies of Programmers: Fourth Workshop, 1991. [8]
Pair Programming Questionnaire
  • L Williams
L. Williams, "Pair Programming Questionnaire," http://limes.cs.utah.edu/questionnaire/questionnaire.htm.