Passar nos casos de teste é suficiente? Identificação e análise de problemas de compreensão em códigos corretos

Resumo


O uso de sistemas de correção automática (autograders) auxilia o ensino de disciplinas de introdução à programação (CS1). No entanto, o foco na corretude pode ofuscar a verificação de outros problemas presentes no código. Neste trabalho, foi investigado se códigos, ditos corretos por um autograder, apresentavam comportamentos que poderiam indicar falhas na aprendizagem dos conceitos abordados em CS1. Esses comportamentos foram denominados Problemas de Compreensão em Códigos Corretos (PC³). Ao analisar 2441 códigos, uma lista com 45 PC³ foi elaborada e posteriormente avaliada por docentes de CS1 para identificar quais PC³ mais necessitam de correção em sala de aula e de que forma essa correção poderia ser realizada. Ao todo, 15 PC³ foram considerados mais graves e as sugestões dos docentes envolveram detecção automática dos PC³ e utilização de técnicas de Aprendizagem Ativa. Os resultados obtidos podem orientar a construção de artefatos para intervenções que abordem PC³ em CS1.
Palavras-chave: Introdução à programação, Problemas de compreensão, Avaliação automática, CS1

Referências

Vicki L Almstrum, Peter B Henderson, Valerie Harvey, Cinda Heeren, William Marion, Charles Riedesel, Leen-Kiat Soh, and Allison Elliott Tew. 2006. Concept inventories in computer science for the topic discrete mathematics. In Working group reports on ITiCSE on Innovation and technology in computer science education. 132–145.

Ada Araujo, Daniel Filho, Elaine Oliveira, Leandro Carvalho, Filipe Pereira, and David Oliveira. 2021. Mapeamento e análise empírica de misconceptions comuns em avaliações de introdução à programação. In Anais do Simpósio Brasileiro de Educação em Computação (On-line). SBC, Porto Alegre, RS, Brasil, 123–131.

Luis Gustavo Jesus Araujo, Roberto Almeida Bittencourt, and Christina von Flach Garcia Chavez. 2021. Python Enhanced Error Feedback: Uma IDE Online de Apoio ao Processo de Ensino-Aprendizagem em Programação. In Anais do Simpósio Brasileiro de Educação em Computação. SBC, 326–333.

Elisa Baniassad, Lucas Zamprogno, Braxton Hall, and Reid Holmes. 2021. STOP THE (AUTOGRADER) INSANITY: Regression Penalties to Deter Autograder Overreliance. In Proceedings of the 52nd ACM Technical Symposium on Computer Science Education. 1062–1068.

Brett A. Becker and Thomas Fitzpatrick. 2019. What do cs1 syllabi reveal about our expectations of introductory programming students?. In Proceedings of the 50th ACM Technical Symposium on Computer Science Education. 1011–1017.

Brett A. Becker, Kyle Goslin, and Graham Glanville. 2018. The effects of enhanced compiler error messages on a syntax error debugging test. SIGCSE 2018 - Proceedings of the 49th ACM Technical Symposium on Computer Science Education 2018-Janua, 640–645.

C.C. Bonwell and J.A. Eison. 1991. Active Learning: Creating Excitement in the Classroom. Wiley. https://books.google.com.br/books?id=AW7uAAAAMAAJ

Ricardo Caceffo, Pablo Frank-Bolton, Renan Souza, and Rodolfo Azevedo. 2019. Identifying and validating java misconceptions toward a cs1 concept inventory. In Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education. 23–29.

Ricardo Caceffo, Guilherme Gama, and Rodolfo Azevedo. 2018. Exploring Active Learning Approaches to Computer Science Classes. In Proceedings of the 49th ACM Technical Symposium on Computer Science Education (Baltimore, Maryland, USA) (SIGCSE ’18). Association for Computing Machinery, New York, NY, USA, 922–927.

Ricardo Caceffo, SteveWolfman, Kellogg S. Booth, and Rodolfo Azevedo. 2016. Developing a Computer Science Concept Inventory for Introductory Programming. In Proceedings of the 47th ACM Technical Symposium on Computing Science Education (Memphis, Tennessee, USA) (SIGCSE ’16). Association for Computing Machinery, New York, NY, USA, 364–369.

Andrew Cain and Muhammad Ali Babar. 2016. Reflections on applying constructive alignment with formative feedback for teaching introductory programming and software architecture. In Proceedings of the 38th International Conference on Software Engineering Companion. 336–345.

Catherine H Crouch and Eric Mazur. 2001. Peer instruction: Ten years of experience and results. American journal of physics 69, 9, 970–977.

Giuseppe De Ruvo, Ewan Tempero, Andrew Luxton-Reilly, Gerard B Rowe, and Nasser Giacaman. 2018. Understanding semantic style by analysing student code. In Proceedings of the 20th Australasian Computing Education Conference. 73–82.

Stephen H Edwards. 2021. Automated Feedback, the Next Generation: Designing Learning Experiences. In Proceedings of the 52nd ACM Technical Symposium on Computer Science Education. 610–611.

Margaret Ellis, Clifford A. Shaffer, and Stephen H. Edwards. 2019. Approaches for coordinating etextbooks, online programming practice, automated grading, and more into one course. SIGCSE 2019 - Proceedings of the 50th ACM Technical Symposium on Computer Science Education, 126–132.

Leandro Galvão, David Fernandes, and Bruno Gadelha. 2016. Juiz online como ferramenta de apoio a uma metodologia de ensino híbrido em programação. In Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação-SBIE), Vol. 27. 140.

Guilherme Gama, Ricardo Caceffo, Renan Souza, Raysa Bennati, Tales Aparecida, Islene Garcia, and Rodolfo Azevedo. 2018. An Antipattern Documentation about Misconceptions related to an Introductory Programming Course in Python. Technical Report IC-18-19. Institute of Computing, University of Campinas. In English, 106 pages.

Philip Guo. 2014. Python Is Now the Most Popular Introductory Teaching Language at Top U.S. Universities. [link]. Online.

Jack Hollingsworth. 1960. Automatic Graders for Programming Classes. Commun. ACM 3, 10, 528–529.

Silas Hsu, Tiffany Wenting Li, Zhilin Zhang, Max Fowler, Craig Zilles, and Karrie Karahalios. 2021. Attitudes Surrounding an Imperfect AI Autograder. In Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems (Yokohama, Japan) (CHI ’21). Association for Computing Machinery, New York, NY, USA, Article 681, 15 pages.

Petri Ihantola and Andrew Petersen. 2019. Code complexity in introductory programming courses. In Proceedings of the 52nd Hawaii International Conference on System Sciences. 7662–7670.

Inside Higher Ed. 2018. Autograder issues upset students at Berkeley. [link]. (Acesso em 18/01/2021).

Hieke Keuning, Bastiaan Heeren, and Johan Jeuring. 2019. How teachers would help students to improve their code. In Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education. 119–125.

Hieke Keuning, Bastiaan Heeren, and Johan Jeuring. 2021. A tutoring system to learn code refactoring. In Proceedings of the 52nd ACM Technical Symposium on Computer Science Education. 562–568.

Jonathan Lazar, Jinjuan Heidi Feng, and Harry Hochheiser. 2017. Research methods in human-computer interaction. Morgan Kaufmann.

David Liu and Andrew Petersen. 2019. Static analyses in python programming courses. SIGCSE 2019 - Proceedings of the 50th ACM Technical Symposium on Computer Science Education, 666–671.

Samiha Marwan, Nicholas Lytle, Joseph Jay Williams, and Thomas Price. 2019. The impact of adding textual explanations to next-step hints in a novice programming environment. In Proceedings of the 2019 ACM conference on innovation and technology in computer science education. 520–526.

Filipe D Pereira, Elaine HT Oliveira, David BF Oliveira, Alexandra I Cristea, Leandro SG Carvalho, Samuel C Fonseca, Armando Toda, and Seiji Isotani. 2020. Using learning analytics in the Amazonas: understanding students’ behaviour in introductory programming. British journal of educational technology 51, 4, 955–972.

Leo Porter, Cynthia Bailey Lee, and Beth Simon. 2013. Halving Fail Rates Using Peer Instruction: A Study of Four Computer Science Courses. In Proceeding of the 44th ACM Technical Symposium on Computer Science Education (Denver, Colorado, USA) (SIGCSE ’13). Association for Computing Machinery, New York, NY, USA, 177–182.

James Prather, Raymond Pettit, Kayla McMurry, Alani Peters, John Homer, and Maxine Cohen. 2018. Metacognitive difficulties faced by novice programmers in automated assessment tools. ICER 2018 - Proceedings of the 2018 ACM Conference on International Computing Education Research, 41–50.

Yizhou Qian and James Lehman. 2017. Students’ misconceptions and other difficulties in introductory programming: A literature review. ACM Transactions on Computing Education (TOCE) 18, 1, 1–24.

R.H. Sampieri, C.F. Collado, and P.B. Lucio. 2013. Metodologia de pesquisa. Penso.

Eryck Silva, Ricardo Caceffo, and Rodolfo Azevedo. 2021. Análise Estática de Código em Conjunto com Autograders. In Anais Estendidos do I Simpósio Brasileiro de Educação em Computação (On-line). SBC, Porto Alegre, RS, Brasil, 25–26.

Eryck Silva, Ricardo Caceffo, and Rodolfo Azevedo. 2022. Análise dos Tópicos Mais Abordados em Disciplinas de Introdução à Programação em Universidades Federais Brasileiras. In Anais do II Simpósio Brasileiro de Educação em Computação (Online). SBC, Porto Alegre, RS, Brasil, 29–39.

Eryck Silva, Ricardo Caceffo, and Rodolfo Azevedo. 2023. Misconceptions in Correct Code: rating the severity of undesirable programming behaviors in Python CS1 courses. Technical Report IC-23-01. Institute of Computing, University of Campinas. In English, 149 pages.

Beth Simon, Sarah Esper, Leo Porter, and Quintin Cutts. 2013. Student Experience in a Student-Centered Peer Instruction Classroom. In Proceedings of the Ninth Annual International ACM Conference on International Computing Education Research (San Diego, San California, USA) (ICER ’13). Association for Computing Machinery, New York, NY, USA, 129–136.

Beth Simon, Michael Kohanfars, Jeff Lee, Karen Tamayo, and Quintin Cutts. 2010. Experience Report: Peer Instruction in Introductory Computing (SIGCSE ’10). Association for Computing Machinery, New York, NY, USA, 341–345.

Beth Simon, Julian Parris, and Jaime Spacco. 2013. How We Teach Impacts Student Learning: Peer Instruction vs. Lecture in CS0. In Proceeding of the 44th ACM Technical Symposium on Computer Science Education (Denver, Colorado, USA) (SIGCSE ’13). Association for Computing Machinery, New York, NY, USA, 41–46.

Juha Sorva and Arto Vihavainen. 2016. Break Statement Considered. ACM Inroads 7, 3, 36–41.

Leo C. Ureel and Charles Wallace. 2019. Automated critique of early programming antipatterns. SIGCSE 2019 - Proceedings of the 50th ACM Technical Symposium on Computer Science Education, 738–744.

Kurt VanLehn. 2006. The behavior of tutoring systems. International journal of artificial intelligence in education 16, 3, 227–265.

Brian A Wichmann, AA Canning, DL Clutterbuck, LA Winsborrow, NJ Ward, and D William R Marsh. 1995. Industrial perspective on static analysis. Software Engineering Journal 10, 2, 69–75.
Publicado
24/04/2023
SILVA, Eryck Pedro da; CACEFFO, Ricardo Edgard; AZEVEDO, Rodolfo. Passar nos casos de teste é suficiente? Identificação e análise de problemas de compreensão em códigos corretos. In: SIMPÓSIO BRASILEIRO DE EDUCAÇÃO EM COMPUTAÇÃO (EDUCOMP), 3. , 2023, Evento Online. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2023 . p. 119-129. DOI: https://doi.org/10.5753/educomp.2023.228346.