Trabajo de grado - Maestría
Building a Developer’s Reputation Model for Programming Contest Platforms based on Source Code Analysis
Fecha
2019Autor
Garavito Mendez, Oscar Javier
Institución
Resumen
Abstract: Last years developers became interested in competitive programming, producing the burst of online platforms which design competitions, where a set of programming problems should be solved. People realize this format is also useful for recruiting and training purposes. As developers participate in contests they gain points and are classified in rankings, according to the performance they exhibit in each competition. Today, these ranks are analogous to reputation systems since they indicate the programmers’ expertise. In this thesis dissertation, it is explored the relationship between this reputation and source code features, extracted via source code analysis, of the solutions sent by participants. The aim of this research is to find a set of features, classified into categories lexical, syntactic, quality and readability, which are shared by developers in the same level of knowledge. These features allow us to build a model to predict the programmers’ expertise, considering two classes to divide the developers, who can be assigned to beginners or advanced. In that sense, an experiment was designed to create a classifier model to accomplish that task. Overall, the results look promising, achieving an approximate accuracy of 80 %, and having the lexical features as the most relevant for the model. Resumen: En los últimos años, los desarrolladores se han interesado en la programación competitiva, provocando una explosión en el uso de las plataformas en línea que diseñan este tipo de competencias. En ellas se resuelven una serie de problemas de programación. Este formato también ha resultado útil para fines de reclutamiento y capacitación. A medida que los desarrolladores participan en concursos, ganan puntos y se clasifican en rankings, de acuerdo con el rendimiento que tienen en cada competencia. Hoy en día puede decirse que estos rangos son análogos a los sistemas de reputación, ya que dan indicios acerca de la experiencia de los programadores. En esta tesis, se explora la relación entre esta reputación y las características del código fuente, extra ‘idas a través del análisis del código fuente, de las soluciones enviadas por los participantes. El objetivo de esta investigación es encontrar un conjunto de características, clasificadas en categorías léxicas, sintácticas, de calidad y legibilidad, que sean compartidas por los desarrolladores en el mismo nivel de conocimiento. Estas características nos permiten construir un modelo para predecir la experiencia de los programadores, considerándolos como principiantes o avanzados. En ese sentido, se diseñó un experimento para crear un modelo de clasificador, para llevar a cabo esa tarea. En general, los resultados lucen prometedores, logrando una precisión aproximada del 80 % y teniendo a las características léxicas como las más relevantes para el modelo.