Uso de atributos de código para classificação da facilidade de questões de codificação

Resumo


No ensino de programação, é comum o uso de Ambientes de Correção Automática de Código (ACACs). Esses apresentam uma alta diversidade de exercícios de programação que requerem que o estudante elabore um código como solução. Contudo, um obstáculo é classificar a facilidade ou dificuldade desses exercícios de modo que sejam apresentados conforme o nível de conhecimento do aluno, ou para que durante uma avaliação formulada por sorteio aleatório de questões, os alunos possam receber exercícios com nível de dificuldade semelhantes. Nesse sentido, este trabalho apresenta um método para classificar automaticamente o grau de facilidade de questões de codificação em Python, usando para isso atributos extraídos de códigos de solução. Foram analisadas 354 questões, agrupadas em 07 conjuntos segundo os tópicos abordados, que foram previamente definidos na ementa de uma disciplina de introdução à programação. Essas questões foram aplicadas em exames presenciais de turmas ministradas entre os anos de 2017 e 2019. Entre os resultados, verificou-se que a facilidade das questões pode ser estimada por meio de atributos do código de solução dos instrutores, com f1-score de 0,94 e acurácia de 0,92. Além disso, o conjunto de atributos relevantes para classificação variou conforme o tópico de programação abordado pelas questões.
Palavras-chave: classificação, facilidade, dificuldade, questões de programação, atributos de código

Referências

Brett A. Becker and Keith Quille. 2019. 50 Years of CS1 at SIGCSE: A Review of the Evolution of Introductory Programming Education Research. In Proceedings of the 50th ACM Technical Symposium on Computer Science Education (Minneapolis,MN, USA) (SIGCSE ’19). Association for Computing Machinery, New York, NY,USA, 338–344. https://doi.org/10.1145/3287324.3287432


Jean Luca Bez, Carlos E. Ferreira, and Neilor Tonin. 2013/08. URI Online Judge Academic: A Tool for Professors. In Proceedings of the 2013 International Conference on Advanced ICT and Education. Atlantis Press, Hainan, China, 744–747. https://doi.org/10.2991/icaicte.2013.153


Paul Denny, Diana Cukierman, and Jonathan Bhaskar. 2015. Measuring the effect of inventing practice exercises on learning in an introductory programming course. In Proceedings of the 15th Koli Calling Conference on Computing Education Research. Association for Computing Machinery, New York, NY, USA, 13–22.


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áticana Educação - SBIE) 27, 1 (2016), 140.


Samuel Fonseca, Elaine Oliveira, Filipe Pereira, David Fernandes and Leandro Carvalho. 2019. Adaptação de um método preditivo para inferir o desempenho de alunos de programação. Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação - SBIE) 30, 1 (2019), 1651. https://doi.org/10.5753/cbie.sbie.2019.1651


Tomáš Effenberger, Jaroslav Čechák, and Radek Pelánek. 2019. Measuring Difficulty of Introductory Programming Tasks. In Proceedings of the Sixth (2019) ACM Conference on Learning @ Scale (Chicago, IL, USA) (L@S ’19). Association for Computing Machinery, New York, NY, USA, Article 28, 4 pages. https://doi.org/10.1145/3330430.3333641


Said Elnaffar. 2016. Using software metrics to predict the difficulty of code writing questions. In 2016 IEEE Global Engineering Education Conference (EDUCON). IEEE, Abu Dhabi, UAE, 513–518.


A.E. Elo. 1978. The Rating of Chessplayers, Past and Present. Arco Pub. https://books.google.com.br/books?id=8pMnAQAAMAAJ


Daniel Filho, Elaine Oliveira, Leandro Carvalho, Marcela Pessoa, Filipe Pereira, and David Oliveira. 2020. Uma análise orientada a dados para avaliar o impacto da gamificação de um juiz on-line no desempenho de estudantes. In Anais do XXXI Simpósio Brasileiro de Informática na Educação (Online). SBC, Porto Alegre,RS, Brasil, 491–500. https://doi.org/10.5753/cbie.sbie.2020.491


Samuel Fonseca, Filipe Pereira, Elaine Teixeira de Oliveira, David Oliveira, Leandro Carvalho, and Alexandra Cristea. 2020. Automatic Subject-based Contextualisation of Programming Assignment Lists. EDM, EDM.


Rodrigo Elias Francisco and Ana Paula Ambrosio. 2015. Mining an Online Judge System to Support Introductory Computer Programming Teaching. In 8th International Conference on Education Data Mining (EDM2015). EDM, Madrid, Spain.


Rodrigo Elias Francisco, Ana Paula Laboissière Ambrósio, Cleon Xavier Pereira Junior, and Márcia Aparecida Fernandes. 2018. Juiz online no ensino de CS1 - lições aprendidas e proposta de uma ferramenta. Revista Brasileira de Informática na Educação 26, 03 (2018), 163.


Maurice H. Halstead. 1977. Elements of Software Science (Operating and Programming Systems Series). Elsevier Science Inc., USA.


INEP. 2017. Relatório Síntese de Área – Ciência da Computação. Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira.


Chowdhury Md Intisar and Yutaka Watanobe. 2018. Cluster Analysis to Estimate the Difficulty of Programming Problems. In Proceedings of the 3rd International Conference on Applications in Information Technology (Aizu-Wakamatsu, Japan) (ICAIT’2018). Association for Computing Machinery, New York, NY, USA, 23–28. https://doi.org/10.1145/3274856.3274862


Mike Joy and Michael Luck. 1999. Plagiarism in programming assignments. IEEE Transactions on education 42, 2 (1999), 129–133.


Hermino Júnior, Filipe Pereira, Elaine Oliveira, David Oliveira, and Leandro Carvalho. 2020. Recomendação Automática de Problemas em Juízes Online Usando Processamento de Linguagem Natural e Análise Dirigida aos Dados. In Anais do XXXI Simpósio Brasileiro de Informática na Educação (Online). SBC, Porto Alegre, RS, Brasil, 1152–1161. https://doi.org/10.5753/cbie.sbie.2020.1152


Nadia Kasto and Jacqueline Whalley. 2013. Measuring the Difficulty of Code Comprehension Tasks Using Software Metrics. In Proceedings of the Fifteenth Australasian Computing Education Conference - Volume 136 (Adelaide, Australia) (ACE ’13). Australian Computer Society, Inc., AUS, 59–65.


Marcos Lima, Leandro Carvalho, Elaine Oliveira, David Oliveira, and Filipe Pereira. 2020. Classificação de dificuldade de questões de programação com base em métricas de código. In Anais do XXXI Simpósio Brasileiro de Informática na Educação (Online). SBC, Porto Alegre, RS, Brasil, 1323–1332. https://doi.org/10.5753/cbie.sbie.2020.1323


Luis Llana, Enrique Martin-Martin, and Cristóbal Pareja-Flores. 2012. FLOP, a Free Laboratory of Programming. In Proceedings of the 12th Koli Calling International Conference on Computing Education Research (Koli, Finland) (Koli Calling ’12). Association for Computing Machinery, New York, NY, USA, 93—99. https://doi.org/10.1145/2401796.2401807


Andrew Luxton-Reilly, Simon, Ibrahim Albluwi, Brett A. Becker, Michail Giannakos, Amruth N. Kumar, Linda Ott, James Paterson, Michael James Scott, Judy Sheard, and Claudia Szabo. 2018. Introductory Programming: A Systematic Literature Review (ITiCSE 2018 Companion). Association for Computing Machinery, New York, NY, USA, 55–106. https://doi.org/10.1145/3293881.3295779


Thomas J. McCabe. 1976. A Complexity Measure. IEEE Transactions on Software Engineering SE-2, 4 (1976), 308–320.


Rodrigo Pessoa Medeiros, Geber Lisboa Ramalho, and Taciana Pontual Falcão. 2018. A systematic literature review on teaching and learning introductory programming in higher education. IEEE Transactions on Education 62, 2 (2018), 77–90.


Veijo Meisalo, E Sutinen, and S Torvinen. 2004. Classification of exercises in a virtual programming course. In 34th Annual Frontiers in Education (FIE 2004), Vol. 3. IEEE, Savannah, GA, USA, S3D–1. https://doi.org/10.1109/FIE.2004.1408764


Adler Neves, Marcia Oliveira, Helen França, Mônica Lopes, Leonardo Reblin, and Elias Oliveira. 2017. PCodigo II: O Sistema de Diagnóstico da Aprendizagem de Programação por Métricas de Software. Anais dos Workshops do Congresso Brasileiro de Informática na Educação 6, 1 (2017), 339. https://doi.org/10.5753/cbie.wcbie.2017.339


Joseph Oliveira, Felipe Salem, Elaine Oliveira, David Oliveira, Leandro Carvalho, and Filipe Pereira. 2020. Os estudantes leem as mensagens de feedback estendido exibidas em juízes online?. In Anais do XXXI Simpósio Brasileiro de Informática na Educação (Online). SBC, Porto Alegre, RS, Brasil, 1723–1732. https://doi.org/10.5753/cbie.sbie.2020.1723


Márcia Oliveira, Adler Neves, Mônica Lopes, and Andreangelo Patuzzo. 2018. Análise de Aprendizagem a partir de Códigos-Fontes e uma Proposta de Seleção Automática de Métricas de Avaliação. Anais dos Workshops do Congresso Brasileiro de Informática na Educação 7, 1 (2018), 369. https://doi.org/10.5753/cbie.wcbie.2018.369


Radek Pelánek. 2016. Applications of the Elo rating system in adaptive educational systems. Computers & Education 98 (2016), 169–179. https://doi.org/10.1016/j.compedu.2016.03.017


Filipe Pereira, Linnik Souza, Elaine Oliveira, David Oliveira, and Leandro Carvalho. 2020. Predição de desempenho em ambientes computacionais para turmas de programação: um Mapeamento Sistemático da Literatura. In Anais do XXXI Simpósio Brasileiro de Informática na Educação (Online). SBC, Porto Alegre, RS,Brasil, 1673–1682. https://doi.org/10.5753/cbie.sbie.2020.1673


Filipe Pereira, Elaine Teixeira de Oliveira, David Oliveira, Alexandra Cristea, Leandro Carvalho, Samuel 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 (05 2020), 955–972. https://doi.org/10.1111/bjet.12953


Filipe D. Pereira, Elaine Oliveira, Alexandra Cristea, David Fernandes, Luciano Silva, Gene Aguiar, Ahmed Alamri, and Mohammad Alshehri. 2019. Early Dropout Prediction for Programming Courses Supported by Online Judges. In Artificial Intelligence in Education, Seiji Isotani, Eva Millán, Amy Ogan, Peter Hastings, Bruce McLaren, and Rose Luckin (Eds.). Springer International Publishing, Cham, 67–72.


Filipe Dwan Pereira, Francisco Pires, Samuel Fonseca, Elaine Oliveira, Leandro Carvalho, David Oliveira, and Alexandra Cristea. 2021. Towards a Human-AI hybrid system for categorising programming problems (SIGCSE ’21). Association for Computing Machinery, New York, NY, USA, 7. https://doi.org/10.1145/3408877.3432422


Filipe D. Pereira, Armando Toda, Elaine H. T. Oliveira, Alexandra I. Cristea, Seiji Isotani, Dion Laranjeira, Adriano Almeida, and Jonas Mendonça. 2020. Can We Use Gamification to Predict Students’ Performance? A Case Study Supported by an Online Judge. In Intelligent Tutoring Systems, Vivekanandan Kumar and Christos Troussas (Eds.). Springer International Publishing, Cham, 259–269.


Anthony V. Robins. 2019. Novice Programmers and Introductory Programming. Cambridge University Press, 327–376. https://doi.org/10.1017/9781108654555.013


Francisco Rosales, Antonio García, Santiago Rodríguez, José L Pedraza, Rafael Méndez, and Manuel M Nieto. 2008. Detection of plagiarism in programming assignments. IEEE Transactions on Education 51, 2 (2008), 174–183.


Ingrid Santos, David Oliveira, Leandro Carvalho, Filipe Pereira, and Elaine Oliveira. 2020. Tempos de Transição em Estados de Corretude e Erro como Indicadores de Desempenho em Juízes Online. In Anais do XXXI Simpósio Brasileiro de Informática na Educação (Online). SBC, Porto Alegre, RS, Brasil, 1283–1292. https://doi.org/10.5753/cbie.sbie.2020.1283


Pedro Santos, Leandro Silva Galvão Carvalho, Elaine Oliveira, and David Fernan-des. 2019. Classificação de dificuldade de questões de programação com base na inteligibilidade do enunciado. In Simpósio Brasileiro de Informática na Educação (SBIE), Vol. 30. SBC, Porto Alegre, RS, Brasil, 1886–1895.


Judy Sheard, Simon, Angela Carbone, Donald Chinn, Mikko-Jussi Laakso, Tony Clear, Michael Raadt, Daryl D’Souza, James Harland, Raymond Lister, Anne Philpott, and Geoff Warburton. 2011. Exploring Programming Assessment Instruments: A Classification Scheme for Examination Questions. In 7th Intern. Workshop on Computing Education Research (ICER). Association for Computing Machinery, Providence, USA, 33—38.


Narjes Tahaei and David C. Noelle. 2018. Automated Plagiarism Detection for Computer Programming Exercises Based on Patterns of Resubmission. In Proceedings of the 2018 ACM Conference on International Computing Education Research (Espoo, Finland) (ICER ’18). Association for Computing Machinery, NewYork, NY, USA, 178–186. https://doi.org/10.1145/3230977.3231006


Farhan Ullah, Junfeng Wang, Muhammad Farhan, Sohail Jabbar, Zhiming Wu, and Shehzad Khalid. 2020. Plagiarism detection in students’ programming assignments based on semantics: multimedia e-learning based smart assessment methodology. Multimedia tools and applications 79, 13 (2020), 8581–8598.


Szymon Wasik, Maciej Antczak, Jan Badura, Artur Laskowski, and Tomasz Sternal. 2018. A survey on online judge systems and their applications. ACM Computing Surveys (CSUR) 51, 1 (2018), 1–34.


David Wolpert. 1992. Stacked Generalization. Neural Networks 5 (12 1992), 241–259. https://doi.org/10.1016/S0893-6080(05)80023-1


Fabiana Zaffalon, André Vargas, Ricardo Souza, Rafael Penna, Jean Bez, Neilor Tonin, and Silvia Botelho. 2019. Um estudo comparativo entre dois modelos que estimam a habilidade dos estudantes: ELO e Teoria de Resposta ao Item. Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação - SBIE) 30, 1 (2019), 459. https://doi.org/10.5753/cbie.sbie.2019.459


Wayne Xin Zhao, Wenhui Zhang, Yulan He, Xing Xie, and Ji-Rong Wen. 2018. Automatically learning topics and difficulty levels of problems in online judge systems. ACM Transactions on Information Systems (TOIS) 36, 3 (2018), 1–33.
Publicado
26/04/2021
LIMA, Marcos Avner Pimenta de Lima; CARVALHO, Leandro Silva Galvão de; OLIVEIRA, Elaine Harada Teixeira de; OLIVEIRA, David Braga Fernandes de; PEREIRA, Filipe Dwan. Uso de atributos de código para classificação da facilidade de questões de codificação. In: SIMPÓSIO BRASILEIRO DE EDUCAÇÃO EM COMPUTAÇÃO (EDUCOMP), 1. , 2021, On-line. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2021 . p. 113-122. DOI: https://doi.org/10.5753/educomp.2021.14477.