Crowdcoding is a programming model that outsources a software project implementation to the crowd. As educators, we think that crowdcoding could be leveraged as part of the learning path of engineering students from a computer programming introductory course to solve local community problems. The benefits are twofold: on the one hand the students practice the concepts learned in class and, on the other hand, they participate in real-life problems. Nevertheless, several challenges arise when developing a crowdcoding platform, the first one being how to check the correctness of student's code without giving an extra burden to the professors in the course. To overcome this issue, we propose a novel system that does not resort to expert review; neither requires knowing the right answers beforehand. The proposed scheme automatically clusters the student's codes based solely on the output they produce. Our initial results show that the largest cluster contains the same codes selected as correct by the automated and human testing, as long as some conditions apply.
K E Y W O R D Sautomated code correctness assessment, computer programming education, crowdcoding, software crowdsourcing
| INTRODUCTIONCrowdsourcing gathers a vast and diverse group of people distributed around the world working towards a common goal resorting to the "wisdom of crowds." The assumption under this new collaborative work model is that the crowd can perform a task with higher speed and quality than any expert. In the crowdsourcing language, a requester is an organization or person that submits a task to a crowdsourcing platform. The workers are the people willing to carry out the task and submit their contributions to the same platform. Wikipedia is a wellknown example of crowdsourcing, but nowadays many organizations are using this collaborative work model to improve their business in diverse areas such as product design, drug development, mining, and software development [4,15].Crowdcoding (also known as Software Crowdsourcing) builds on the idea of crowdsourcing for software development projects. In a crowdcoding-based development, the original project (either as a whole or divided into smaller/simpler tasks) is presented as a coding challenge to an online community of software engineers. A group of reviewers ranks the submissions, and the best ones are selected to build the original project. One of the advantages attributed to crowdcoding is the lowering of defect rate thanks to the various development capacity provided by different programmers [7].We argue that crowdcoding can be successfully used in educative environments as a way to solve computer-related challenges from local communities. That is, resorting to students (workers) of computer programming courses to build 162 |