Towards a fictional collective programming scenario: an approach based on the EIF loop
- PDF / 6,793,952 Bytes
- 40 Pages / 439.642 x 666.49 pts Page_size
- 39 Downloads / 147 Views
Towards a fictional collective programming scenario: an approach based on the EIF loop Chunhui Wang1,2,3
· Wei Zhang1,2 · Haiyan Zhao1,2 · Zhi Jin1,2
© Springer Science+Business Media, LLC, part of Springer Nature 2020
Abstract In this paper, we base our research on a fictional collective programming scenario: A group of physically-distributed programmers try to collaboratively solve a programming problem in a web-based development environment, through a continually executing loop, consisting of three concurrent activities: exploration, integration, and feedback. In exploration, a programmer is freely to submit a sequence of gradually improved solutions until achieving a correct one. All programmers’ latest submissions are integrated into a collective artifact through integration. And through feedback, any programmer who hasn’t achieved a correct solution is continuously pushed with personalized feedback information from the collective artifact, to help the programmer improve her/his submission. In order to facilitate the realization of this fictional scenario, we narrow the target problems to those introductory programming problems, design a genetic algorithm to integrate a set of syntax-correct programs into a collective program dependence graph (CPDG), and propose an automatic feedback generation method based on the CPDG and a programmer’s latest submission. The key idea is to generate feedback from mutual inspiration: Any programmer’s submission (even not correct) may possess information that could provide inspiration for others. We evaluate the proposed approach through a set of simulated experiments, as well as a set of real experiments. The results show that our approach has a precision of 90% and a recall of 80% in randomly generated data sets on average, and a precision of 69% and a recall of 77% in real student submissions on average. Keywords Collective programming · Genetic algorithm · Software engineering · Collaborative learning
This article belongs to the Topical Collection: Software Applications (NASAC) Communicated by: Xin Xia, Hui Liu, David Lo Wei Zhang
[email protected]
Extended author information available on the last page of the article.
Empirical Software Engineering
1 Introduction Programming is a complex problem. It is nearly impossible to ensure that a program contains no bugs and will behavior as expected in all possible circumstances, even a large group of programmers have made intensive efforts to improve the program (Kidwell 1996). It seems that conventional programming methods lack sufficient scalability of collaboration among programmers: More programmers involved in a programming problem will not usually bring the expected increasing of problem-solving efficiency or solution quality. However, scientists do observe successfully massive collaboration phenomena in many social insects: hundreds or thousands of individual insects work together in collaborative and decentralized ways, and solve complex problems far beyond the capability of any individual insect (Genovese et
Data Loading...