Previsão de indicadores de dificuldade de questões de programação a partir de métricas do código de solução
Resumo
Juízes Online (JOs) são usados em disciplinas de programação para disponibilizar listas de exercícios e avaliações práticas. Porém, não é uma tarefa fácil criar listas selecionando exercícios com níveis de dificuldade adequados a cada turma. Uma forma de ajudar o professor nessa tarefa é apresentar indicadores de dificuldade para cada questão, tais como taxa de acerto, tempo de desenvolvimento médio, número de submissões, etc. No entanto, para questões novas, que ainda não foram solucionadas por nenhum aluno, não é possível calcular tais indicadores. Dessa forma, este trabalho usa aprendizagem de máquina para prever nove indicadores de dificuldade a partir de evidências extraídas de códigos de solução, cadastrados pelos professores no momento de criação das questões no JO. Como exemplo de resultado, o maior f1-score obtido foi para prever a taxa de acerto (0,920) em uma classificação binária e o menor foi para o número de submissões (0,560).
Palavras-chave:
machine learning, indicadores de dificuldade, predição de métricas de dificuldade, cursos de programação introdutórios
Referências
Beckmann, J. F., Birney, D. P., and Goode, N. (2017). Beyond psychometrics: the difference between difficult problem solving and complex problem solving. Frontiers in psychology, 8:1739.
Chen, T. and Guestrin, C. (2016). Xgboost: A scalable tree boosting system. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, KDD ’16, page 785–794, New York, NY, USA. Association for Computing Machinery.
Denny, P., Cukierman, D., and Bhaskar, J. (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, pages 13–22.
Effenberger, T., Cechak, J., and Pelanek, R. (2019). Difficulty and complexity of introductory programming problems. In Educational Data Mining in Computer Science Education (CSEDM).
Elnaffar, S. (2016). Using software metrics to predict the difficulty of code writing questions. In IEEE Global Engineering Education Conference (EDUCON), pages 513–518
Francisco, R. E. and Ambrosio, A. P. (2015). Mining an online judge system to support introductory computer programming teaching. In SMLIR: Workshop on Tools and Technologies in Statistics, Machine Learning and Information Retrieval for Educational Data Mining, pages 93–98.
Lima, M. A., Carvalho, L. S., Oliveira, E. H., Oliveira, D. B., and Pereira, F. D. (2021). Uso de atributos de código para classificar a dificuldade de questões de programação em juízes online. Revista Brasileira de Informatica na Educação, 29:1137–1157.
Liu, P. and Li, Z. (2012). Task complexity: A review and conceptualization framework. International Journal of Industrial Ergonomics, 42(6):553–568.
Llana, L., Martin-Martin, E., and Pareja-Flores, C. (2012). Flop, a free laboratory of programming. In Proceedings of the 12th Koli Calling International Conference on Computing Education Research, Koli Calling ’12, page 93–99, New York, NY, USA.
Lundberg, S., Erion, G., Chen, H., DeGrave, A., Prutkin, J., Nair, B., Katz, R., Himmelfarb, J., Bansal, N., and Lee, S.-I. (2020). From local explanations to global understanding with explainable ai for trees. Nature machine intelligence, pages 56–67.
Meisalo, V., Sutinen, E., and Torvinen, S. (2004). Classification of exercises in a virtual programming course. In 34th Annual Frontiers in Education (FIE 2004), pages S3D–1.
Pelanek, R., Effenberger, T., and Čechák, J. (2021). Complexity and difficulty of items in learning systems. International Journal of Artificial Intelligence in Education, pages 1–37.
Santos, P., Carvalho, L. S. G., Oliveira, E. H. T., and Oliveira, D. B. F. (2019). Classificação de dificuldade de questões de programação com base na inteligibilidade do enunciado. Simpósio Brasileiro de Informática na Educação, 30(1):1886–1895.
Sheard, J., Simon, Carbone, A., Chinn, D., Clear, T., Corney, M., D’Souza, D., Fenwick, J., Harland, J., Laakso, M.-J., and Teague, D. (2013). How difficult are exams? a framework for assessing the complexity of introductory programming exams. In Proceedings of the 15th Australasian Computing Education Conference, volume 136 of ACE ’13, pages 145—-154, AUS.
Van Der Linden, W. J. (2009). Conceptual issues in response-time modeling. Journal of Educational Measurement, 46(3):247–272.
Whalley, J. and Kasto, N. (2014). How difficult are novice code writing tasks? a software metrics approach. In Proceedings of the Sixteenth Australasian Computing Education Conference, volume 148, pages 105–112.
Chen, T. and Guestrin, C. (2016). Xgboost: A scalable tree boosting system. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, KDD ’16, page 785–794, New York, NY, USA. Association for Computing Machinery.
Denny, P., Cukierman, D., and Bhaskar, J. (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, pages 13–22.
Effenberger, T., Cechak, J., and Pelanek, R. (2019). Difficulty and complexity of introductory programming problems. In Educational Data Mining in Computer Science Education (CSEDM).
Elnaffar, S. (2016). Using software metrics to predict the difficulty of code writing questions. In IEEE Global Engineering Education Conference (EDUCON), pages 513–518
Francisco, R. E. and Ambrosio, A. P. (2015). Mining an online judge system to support introductory computer programming teaching. In SMLIR: Workshop on Tools and Technologies in Statistics, Machine Learning and Information Retrieval for Educational Data Mining, pages 93–98.
Lima, M. A., Carvalho, L. S., Oliveira, E. H., Oliveira, D. B., and Pereira, F. D. (2021). Uso de atributos de código para classificar a dificuldade de questões de programação em juízes online. Revista Brasileira de Informatica na Educação, 29:1137–1157.
Liu, P. and Li, Z. (2012). Task complexity: A review and conceptualization framework. International Journal of Industrial Ergonomics, 42(6):553–568.
Llana, L., Martin-Martin, E., and Pareja-Flores, C. (2012). Flop, a free laboratory of programming. In Proceedings of the 12th Koli Calling International Conference on Computing Education Research, Koli Calling ’12, page 93–99, New York, NY, USA.
Lundberg, S., Erion, G., Chen, H., DeGrave, A., Prutkin, J., Nair, B., Katz, R., Himmelfarb, J., Bansal, N., and Lee, S.-I. (2020). From local explanations to global understanding with explainable ai for trees. Nature machine intelligence, pages 56–67.
Meisalo, V., Sutinen, E., and Torvinen, S. (2004). Classification of exercises in a virtual programming course. In 34th Annual Frontiers in Education (FIE 2004), pages S3D–1.
Pelanek, R., Effenberger, T., and Čechák, J. (2021). Complexity and difficulty of items in learning systems. International Journal of Artificial Intelligence in Education, pages 1–37.
Santos, P., Carvalho, L. S. G., Oliveira, E. H. T., and Oliveira, D. B. F. (2019). Classificação de dificuldade de questões de programação com base na inteligibilidade do enunciado. Simpósio Brasileiro de Informática na Educação, 30(1):1886–1895.
Sheard, J., Simon, Carbone, A., Chinn, D., Clear, T., Corney, M., D’Souza, D., Fenwick, J., Harland, J., Laakso, M.-J., and Teague, D. (2013). How difficult are exams? a framework for assessing the complexity of introductory programming exams. In Proceedings of the 15th Australasian Computing Education Conference, volume 136 of ACE ’13, pages 145—-154, AUS.
Van Der Linden, W. J. (2009). Conceptual issues in response-time modeling. Journal of Educational Measurement, 46(3):247–272.
Whalley, J. and Kasto, N. (2014). How difficult are novice code writing tasks? a software metrics approach. In Proceedings of the Sixteenth Australasian Computing Education Conference, volume 148, pages 105–112.
Publicado
16/11/2022
Como Citar
SILVA, Élrik Souza; CARVALHO, Leandro S. G.; OLIVEIRA, David B. F. de; OLIVEIRA, Elaine H. T.; LAUSCHNER, Tanara; LIMA, Marcos A. P. de; PEREIRA, Filipe Dwan.
Previsão de indicadores de dificuldade de questões de programação a partir de métricas do código de solução. In: SIMPÓSIO BRASILEIRO DE INFORMÁTICA NA EDUCAÇÃO (SBIE), 33. , 2022, Manaus.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2022
.
p. 859-870.
DOI: https://doi.org/10.5753/sbie.2022.224724.