Uma avaliação comparativa entre métricas de erro em um curso introdutório de programação com Python
Resumo
O feedback oferecido por mensagens de erro produzidas por compiladores e interpretadores tipicamente não é suficiente para apoiar os estudantes novatos. A inserção de feedback adicional nestas mensagens, na forma de mensagens de erro melhoradas, pode ser uma solução para melhor apoiar os estudantes novatos na aprendizagem de programação. No entanto, o oferecimento deste feedback adicional necessita de avaliação acerca da sua eficácia. Para esta avaliação, diversas técnicas são utilizadas, desde abordagens manuais a automatizadas, como as métricas de erro dos estudantes. Da literatura, destacamos as métricas Error Quotient (EQ), Watwin Algorithm e Repeated Error Density (RED). Apesar da existência destas métricas, questões relacionadas à avaliação da eficácia das mensagens permanecem em aberto. Neste artigo, objetivamos comparar as métricas existentes e propor uma nova métrica com base nos achados. Para tal fim, foi ofertado um curso introdutório de Python no ambiente PEEF. Por meio dos dados obtidos no ambiente, as métricas foram mensuradas para todos os projetos. Como resultado, ratificamos a dependência de contexto das métricas EQ e Watwin, além da adequação de RED para abordagens de programação introdutória com Python. Entretanto, destacamos algumas limitações desta última e propomos uma nova métrica, RECurrent Error Density (REC), visando melhor responder ao questionamento sobre o impacto das mensagens melhoradas na aprendizagem dos estudantes novatos. Os resultados demonstram que REC consegue mensurar erros em 43,3% dos projetos dos estudantes, atribuindo avaliação a 30,9% de projetos a mais que a métrica RED. Estes resultados demonstram que o fenômeno de recorrência de erro ocorre e não é considerado adequadamente pelas métricas apresentadas.
Referências
Luis Gustavo J Araujo, Roberto A Bittencourt, and David MB Santos. 2018. Contextualized spiral learning of computer programming in brazilian vocational secondary education. In 2018 IEEE Frontiers in Education Conference (FIE). IEEE
Brett A Becker. 2016. A new metric to quantify repeated compiler errors for novice programmers. In Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science Education. 296–301.
Brett A Becker, Paul Denny, James Prather, Raymond Pettit, Robert Nix, and Catherine Mooney. 2021. Towards Assessing the Readability of Programming Error Messages. In Australasian Computing Education Conference. 181–188.
Brett A Becker, Graham Glanville, Ricardo Iwashima, Claire McDonnell, Kyle Goslin, and Catherine Mooney. 2016. Effective compiler error message enhancement for novice programming students. Computer Science Education 26, 2-3, 148–175.
Paul Denny, James Prather, Brett A Becker, Catherine Mooney, John Homer, Zachary C Albrecht, and Garrett B Powell. 2021. On Designing Programming Error Messages for Novices: Readability and its Constituent Factors. In Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems. 1–15.
Thomas Flowers, Curtis A Carver, and James Jackson. 2004. Empowering students and building confidence in novice programmers through Gauntlet. In 34th Annual Frontiers in Education, 2004. FIE 2004. IEEE, T3H–10.
Linda Grandell, Mia Peltomäki, Ralph-Johan Back, and Tapio Salakoski. 2006. Why complicate things? Introducing programming in high school using Python. In Proceedings of the 8th Australasian Conference on Computing Education-Volume 52. 71–80.
Mark Guzdial. 2003. A media computation course for non-majors. In Proceedings of the 8th annual conference on Innovation and technology in computer science education. 104–108.
Maria Hristova, Ananya Misra, Megan Rutter, and Rebecca Mercuri. 2003. Identifying and correcting Java programming errors for introductory computer science students. ACM SIGCSE Bulletin 35, 1, 153–156.
Matthew C Jadud. 2006. Methods and tools for exploring novice compilation behaviour. In Proceedings of the second international workshop on Computing education research. 73–84.
Galileu Jesus, Kleber Santos, and Jaine Conceição e Alberto Neto. 2018. Análise dos erros mais comuns de aprendizes de programação que utilizam a linguagem Python. Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação - SBIE) 29, 1, 1751.
Tobias Kohn. 2019. The error behind the message: Finding the cause of error messages in python. In Proceedings of the 50th ACM Technical Symposium on Computer Science Education. 524–530.
Tobias Kohn and Bill Manaris. 2020. Tell Me What’s Wrong: A Python IDE with Error Messages. In Proceedings of the 51st ACM Technical Symposium on Computer Science Education. 1054–1060.
Linda Mannila, Mia Peltomäki, and Tapio Salakoski. 2006. What about a simple language? Analyzing the difficulties in learning to program. Computer Science Education 16, 3, 211–227.
Rolf Molich and Jakob Nielsen. 1990. Improving a human-computer dialogue. Commun. ACM 33, 3, 338–348.
Jakob Nielsen and Rolf Molich. 1990. Heuristic evaluation of user interfaces. In Proceedings of the SIGCHI conference on Human factors in computing systems. 249–256.
David Pritchard. 2015. Frequency distribution of error messages. In Proceedings of the 6th Workshop on Evaluation and Usability of Programming Languages and Tools. Association for Computing Machinery, New York, NY, USA, 1–8.
Maria Mercedes T Rodrigo, Emily Tabanao, Ma Beatriz E Lahoz, and Matthew C Jadud. 2009. Analyzing online protocols to characterize novice java programmers. Philippine Journal of Science 138, 2, 177–190.
Tom Schorsch. 1995. CAP: an automated self-assessment tool to check Pascal programs for syntax, logic and style errors. ACM SIGCSE Bulletin 27, 1, 168–172.
Vicente Javier Traver Roig. 2010. On compiler error messages: what they say and what they mean.
Christopher Watson, Frederick WB Li, and Jamie L Godwin. 2013. Predicting performance in an introductory programming course by logging and analyzing student programming behavior. In 2013 IEEE 13th international conference on advanced learning technologies. IEEE, 319–323.