Análise Estática de Código em Conjunto com Autograders

Resumo


Este trabalho tem como objetivo o estudo e desenvolvimento de técnicas que visam auxiliar alunos e professores de disciplinas de introdução à programação nas universidades (CS1). Estas disciplinas, em que estudos reportam altos índices de evasão, são cada vez mais relevantes no ambiente acadêmico, sendo oferecidas não apenas a alunos de computação, mas também no escopo de cursos de STEM (ciência, tecnologia, engenharia e matemática). Neste momento, deseja-se utilizar sistemas de correção automática de código (autograders) como forma de obter e mostrar feedback além do resultado se um determinado programa passa ou não nos conjuntos de casos de teste. Para isto, uma análise estática de código está sendo realizada com soluções de exercícios submetidos por alunos de uma disciplina de introdução à programação da UNICAMP buscando identificar problemas de compreensão simples por meio de métricas. Numa análise geral, existem submissões de alunos com até sete vezes mais estruturas condicionais que a solução oficial e a média da turma para o mesmo exercício. Esse tipo de feedback pode alertar o docente e o aluno de que este padrão de programação pode levar a problemas futuros. Além disso, a proposta desta pesquisa também objetiva aplicar esses feedbacks em conjunto com a Aprendizagem Ativa, de forma a estimular discussões, trazendo os alunos para um maior engajamento em sala de aula. Por fim, com a inclusão destas intervenções também deseja-se avaliar o impacto na carga de trabalho dos docentes, com a expectativa de que seja reduzida.

Link para o vídeo da apresentação: https://youtu.be/ghBTMRN2jEQ

Palavras-chave: CS1, Análise estática de código, Autograders

Referências

Saira Anwar. 2019. Impact of Educational Technology-Based Learning Environment on Students’ Achievement Goals, Motivational Constructs, and Engagement. In Proceedings of the 2019 ACM Conference on International Computing Education Research (Toronto ON, Canada) (ICER ’19). Association for Computing Machinery, New York, NY, USA, 321–322. https://doi.org/10.1145/3291279.3339441

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

Yorah Bosse. 2020. Padrões de Dificuldades Relacionadas com o Aprendizado de Programação. Ph.D. Dissertation. Universidade de São Paulo.

Ricardo Caceffo, Breno de França, Guilherme Gama, Raysa Benatti, Tales Aparecida, Tania Caldas, and Rodolfo Azevedo. 2017. An Antipattern Documentation about Misconceptions related to an Introductory Programming Course in C. In Technical Report 17-15. Institute of Computing, University of Campinas, 42.

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. https://doi.org/10.1145/3159450.3159585

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. https://doi.org/10.1145/2839509.2844559

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 (2019), 126–132. https://doi.org/10.1145/3287324.3287487

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. Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação SBIE) 27, 1 (2016), 140. https://doi.org/10.5753/cbie.sbie.2016.140

Maurice H Halstead. 1972. Natural laws controlling algorithm structure? ACM Sigplan Notices 7, 2 (1972), 19–26.

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

Inside Higher Ed. 2018. Autograder issues upset students at Berkeley. https://www.insidehighered.com/news/2018/11/30/autograder-issues-upsetstudents-berkeley. Acesso em 18/01/2021.

Aaron Keen and Kurt Mammen. 2015. Program decomposition and complexity in CS1. In Proceedings of the 46th ACM Technical Symposium on Computer Science Education. 48–53.

Thomas J McCabe. 1976. A complexity measure. IEEE Transactions on software Engineering 4 (1976), 308–320.

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 (2018), 41–50. https://doi.org/10.1145/3230977.3230981

Juha Sorva. 2012. Visual program simulation in introductory programming education. Aalto University.

Nghi Truong, Paul Roe, and Peter Bancroft. 2004. Static analysis of students’ Java programs. In Proceedings of the Sixth Australasian Conference on Computing Education-Volume 30. Citeseer, 317–325.

Henry M. Walker. 2017. ACM RETENTION COMMITTEE Retention of Students in Introductory Computing Courses: Curricular Issues and Approaches. ACM Inroads 8, 4 (Oct. 2017), 14–16. https://doi.org/10.1145/3151936
Publicado
26/04/2021
SILVA, Eryck; CACEFFO, Ricardo; AZEVEDO, Rodolfo. Análise Estática de Código em Conjunto com Autograders. In: LABORATÓRIO DE IDEIAS - SIMPÓSIO BRASILEIRO DE EDUCAÇÃO EM COMPUTAÇÃO (EDUCOMP), 1. , 2021, On-line. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2021 . p. 25-26. DOI: https://doi.org/10.5753/educomp_estendido.2021.14858.