OLIVEIRA, C. B.; http://lattes.cnpq.br/3972104900612369; OLIVEIRA, Caio Batista.
Resumo:
Introductory programming courses usually have a large number of students enrolled per semester, which makes it difficult for teachers to have individual contact to answer questions. Thus, exercises correction typically occurs through automatic tools. In teaching programming both the functional correction and the correction of the structural form of an algorithmic solution (algorithm design) are important. There are several techniques for the functional part, among the most popular are Online Judges implementations, however there are no widely used tools that optimize this second correction. The area of study of techniques for verifying data structure and design is reduced and without major standart references, leaving teachers with few resources and tools that they can apply to correct the form of the solutions developed by the students. Thus, students can develop structurally incorrect solutions, using functions or data structures that are not allowed, impairing the learning of programming logic and limiting the contact of teachers and students to solve doubts. In this work, we propose a static code analysis approach to detect structural problems in algorithm designs. The goal of this research is to provide the tutor a way to detect an algorithm design without having to execute the algorithm and help him to ensure the integrity of the code structure, such as the use of prohibited functions and specific coding patterns. In order to do that, we developed a tool, Python Design Wizard, which provides us an API, abstracted from Python’s AST, enabling
the creation of code design tests. The research conducted in this Masters involves the validation of the implementation, usability and concepts used to build the tool. This validation is composed of two parts, the first one we conducted a quantitative evaluation running design tests in 1714 Programing I student programs at the Federal University of Campina Grande, using the Python Design Wizard, in order to detect sorting algorithms. In the second part, we use the same tool and the Think Aloud Protocol technique to conduct interviews with education professionals and extract information on whether the proposed solution can positively influence programming learning. Our results include a tool capable of detecting sorting algorithms, among student algorithms, in our quantitative study and a collection of sentences with positive feedback on the concept of design tests, proving the easy understanding of the tests implemented in the tool and its usefulness in the education field.