Título
ACode: Sistema web para avaliação automática de algoritmos Java
Autor
Pinto, Marcos André Moreira
Resumo
pt
A avaliação automática de código-fonte pode ser uma ferramenta importante na aprendizagem de conceitos e linguagens de programação uma vez que permite aos alunos obterem feedback automático em relação à solução que apresentam para determinado problema. As ferramentas existentes fazem uso de testes de entrada e saída de parâmetros para avaliar código submetido por alunos. No entanto, para uma avaliação mais completa é necessário acrescentar a esse processo de avaliação automática técnicas mais avançadas como métricas de engenharia de software.
Face às limitações dessas abordagens, o trabalho de investigação apresentado na presente dissertação descreve e avalia uma abordagem faseada para a avaliação automática de código-fonte: i) o código-fonte do aluno é primeiramente compilado e é analisado se existe algum erro; ii) o código-fonte compilado é testado através de um conjunto de testes JUnit fornecidos pelo docente; iii) é usado um conjunto de métricas de engenharia de software para comparar a solução do aluno com a solução do docente; iv) e, finalmente, com base nas etapas anteriores, o feedback é fornecido ao aluno para que possa auto-avaliar as suas capacidades e identificar as áreas em que necessita de mais estudo e/ou exercícios. O protótipo baseado nesta abordagem foi implementado num ambiente Web e foi testado recorrendo a alunos do público-alvo e com a utilização de um browser de internet. Os resultados da avaliação comprovam que o uso deste tipo de ferramentas facilita a aprendizagem e aquisição de conhecimentos por parte do aluno devido ao feedback imediato e constante fornecido pelo sistema.
en
The automatic evaluation of source code can be an important tool in the learning of concepts and programming languages since it allows students to obtain immediate feedback on the solutions submitted to a programming problem. The existing tools make use of input/output testing to evaluate the code submitted by students. However, for a more complete evaluation, it is necessary to add more advanced techniques to that process of automatic evaluation, such as software engineering metrics.
Given the limitations of these approaches, the research work presented in this dissertation describes and evaluates a phased approach for the automatic evaluation of source code: i) the student's source code is first compiled and checked for any errors; ii) the compiled code is then tested against a set of JUnit tests provided by the teacher; iii) a set of software engineering metrics is used to compare the student's solution against the teacher's solution; iv) and finally, based on the previous stages, feedback is provided to the students so they can self-evaluate and identify the areas in which they need further study and/or exercises. The prototype based on this approach has been implemented in a Web environment and has been tested by the student audience with the use of a web browser. The evaluation results show that the use of these tools improves the learning and the acquisition of knowledge by the student due to the constant and immediate feedback provided by the system.