Abordagem Não-Supervisionada para Inferência do Tópico de um Exercício de Programação a partir do Código Solução
Resumo
No contexto educacional atual, onde a maioria dos educadores utiliza listas de exercícios extraclasses para fortalecer o aprendizado, a necessidade de criar materiais que atendam ao nível de compreensão de todos os alunos é evidente. Esse desafio se estende ao ensino de programação, onde o aprendizado inicial não é simples e a taxa de reprovação e evasão são altas. Assim, este trabalho propõe uma investigação do potencial uso de técnicas de aprendizado de máquina, especificamente abordagens não supervisionadas, em conjunto com técnicas de processamento de linguagem natural (PLN) para agrupar diferentes exercícios de programação. Particularmente, as questões são agrupadas em (clusters) com base em tópicos específicos, permitindo encontrar, com maior facilidade, exercícios que atendam às necessidades dos alunos. Os resultados demonstram o potencial desta abordagem para tornar a criação de listas de exercícios de programação mais rápida e eficaz.Referências
Arthur, D. and Vassilvitskii, S. (2007). k-means++: The advantages of careful seeding. In Proc. of the Annual ACM-SIAM Symposium on Discrete Algorithms (SODA), pages 1027–1035.
Azcona, D., Arora, P., Hsiao, I.-H., and Smeaton, A. (2019). user2code2vec: Embeddings for profiling students based on distributional representations of source code. In Proceedings of the International Learning Analytics Knowledge Conference (LAK). ACM.
Blei, D. M., Ng, A. Y., and Jordan, M. I. (2003). Latent dirichlet allocation. Journal of machine Learning research, 3(Jan):993–1022.
Bosse, Y. and Gerosa, M. A. (2015). Reprovações e trancamentos nas disciplinas de introdução à programação da universidade de são paulo: um estudo preliminar. In Anais do Workshop sobre Educaçao em Computaçao (WEI), pages 426–435.
Chau, H., Barria-Pineda, J., and Brusilovsky, P. (2017). Content wizard: concept-based recommender system for instructors of programming courses. In Adjunct Publication of the Conference on User Modeling, Adaptation and Personalization.
de Freitas Júnior, H. B., Pereira, F. D., de Oliveira, E. H. T., de Oliveira, D. B. F., and de Carvalho, L. S. G. (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 Simpósio Brasileiro de Informática na Educação (SBIE), pages 1152–1161.
de Lima, M. A. P., de Carvalho, L. S. G., de Oliveira, E. H. T., de Oliveira, D. B. F., and Pereira, F. D. (2021). Uso de atributos de código para classificação da facilidade de questões de codificação. In Anais do Simpósio Brasileiro de Educação em Computação (SBIE), pages 113–122.
Devlin, J., Chang, M.-W., Lee, K., and Toutanova, K. (2018). Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.
dos Santos, P., de Carvalho, L. S. G., Oliveira, E., and Fernandes, D. (2019). Classificação de dificuldade de questões de programação com base na inteligibilidade do enunciado. In Anais do Simpósio Brasileiro de Educação em Computação (SBIE), pages 1323–1332.
Ferreira, C., Gonzaga, F., and Santos, S. (2010). Um estudo sobre a aprendizagem de lógica de programaçao por demonstraçao. In Anais do Workshop sobre Educação em Computação (WEI).
Garcia, R. E., Correia, R. C. M., and Shimabukuro, M. H. (2008). Ensino de lógica de programação e estruturas de dados para alunos do ensino médio. In Workshop sobre o Ensino de Computação (WEI), pages 246–249.
Ghahramani, Z. (2003). Unsupervised learning. In Summer school on machine learning, pages 72–112. Springer.
Giraffa, L., Muller, L., and Moraes, M. C. (2015). Ensinado programação apoiada por um ambiente virtual e exercícios associados a cotidiano dos alunos: compartilhando 11 alternativas e lições aprendidas. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação.
Hosseini, R. and Brusilovsky, P. (2017). A study of concept-based similarity approaches for recommending program examples. New Review of Hypermedia and Multimedia, 23(3):161–188.
Jain, A. K. (2010). Data clustering: 50 years beyond k-means. Pattern recognition letters, 31(8):651–666.
Kanade, A., Maniatis, P., Balakrishnan, G., and Shi, K. (2020). Learning and evaluating contextual embedding of source code. In International Conference on Machine Learning, pages 5110–5121.
Laranjeira, D. R. et al. (2020). Recomendação de exercícios para alunos de programação em um ambiente de correção automática de códigos. Dissertação. Universidade Federal do Amazonas. Disponível em: [link].
Likas, A., Vlassis, N., and Verbeek, J. J. (2003). The global k-means clustering algorithm. Pattern recognition, 36(2):451–461.
Newman, D., Lau, J. H., Grieser, K., and Baldwin, T. (2010). Automatic evaluation of topic coherence. In Annual Conference of the North American Chapter of the Association for Computational Linguistics (ACL), pages 100–108.
Řehřek, R. and Sojka, P. (2010). Software framework for topic modelling with large corpora.
Rodrigues, M. (2002). Como ensinar programação. Informática–Boletim Informativo Ano I, (01).
Rousseeuw, P. J. (1987). Silhouettes: a graphical aid to the interpretation and validation of cluster analysis. Journal of computational and applied mathematics, 20:53–65.
Scarton, C. E. and Aluísio, S. M. (2010). Análise da inteligibilidade de textos via ferramentas de processamento de língua natural: adaptando as métricas do coh-metrix para o português. Linguamática, 2(1):45–61.
Silva, C. E. P., Solano, J. L. S., dos Santos, A. G., and Reis, J. C. S. (2023). Previsão de reprovações em disciplinas introdutórias de programação: Um estudo em um ambiente de correção automática de códigos. In Anais do Simpósio Brasileiro de Informática na Educação (SBIE), pages 1524–1535.
Trstenjak, B., Mikac, S., and Donko, D. (2014). Knn with tf-idf based framework for text categorization. Procedia Engineering, 69:1356–1364.
Van der Maaten, L. and Hinton, G. (2008). Visualizing data using t-sne. Journal of machine learning research, 9(11).
Zhang, Y., Jin, R., and Zhou, Z.-H. (2010). Understanding bag-of-words model: a statistical framework. International Journal of Machine Learning and Cybernetics, 1:43–52.
Azcona, D., Arora, P., Hsiao, I.-H., and Smeaton, A. (2019). user2code2vec: Embeddings for profiling students based on distributional representations of source code. In Proceedings of the International Learning Analytics Knowledge Conference (LAK). ACM.
Blei, D. M., Ng, A. Y., and Jordan, M. I. (2003). Latent dirichlet allocation. Journal of machine Learning research, 3(Jan):993–1022.
Bosse, Y. and Gerosa, M. A. (2015). Reprovações e trancamentos nas disciplinas de introdução à programação da universidade de são paulo: um estudo preliminar. In Anais do Workshop sobre Educaçao em Computaçao (WEI), pages 426–435.
Chau, H., Barria-Pineda, J., and Brusilovsky, P. (2017). Content wizard: concept-based recommender system for instructors of programming courses. In Adjunct Publication of the Conference on User Modeling, Adaptation and Personalization.
de Freitas Júnior, H. B., Pereira, F. D., de Oliveira, E. H. T., de Oliveira, D. B. F., and de Carvalho, L. S. G. (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 Simpósio Brasileiro de Informática na Educação (SBIE), pages 1152–1161.
de Lima, M. A. P., de Carvalho, L. S. G., de Oliveira, E. H. T., de Oliveira, D. B. F., and Pereira, F. D. (2021). Uso de atributos de código para classificação da facilidade de questões de codificação. In Anais do Simpósio Brasileiro de Educação em Computação (SBIE), pages 113–122.
Devlin, J., Chang, M.-W., Lee, K., and Toutanova, K. (2018). Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.
dos Santos, P., de Carvalho, L. S. G., Oliveira, E., and Fernandes, D. (2019). Classificação de dificuldade de questões de programação com base na inteligibilidade do enunciado. In Anais do Simpósio Brasileiro de Educação em Computação (SBIE), pages 1323–1332.
Ferreira, C., Gonzaga, F., and Santos, S. (2010). Um estudo sobre a aprendizagem de lógica de programaçao por demonstraçao. In Anais do Workshop sobre Educação em Computação (WEI).
Garcia, R. E., Correia, R. C. M., and Shimabukuro, M. H. (2008). Ensino de lógica de programação e estruturas de dados para alunos do ensino médio. In Workshop sobre o Ensino de Computação (WEI), pages 246–249.
Ghahramani, Z. (2003). Unsupervised learning. In Summer school on machine learning, pages 72–112. Springer.
Giraffa, L., Muller, L., and Moraes, M. C. (2015). Ensinado programação apoiada por um ambiente virtual e exercícios associados a cotidiano dos alunos: compartilhando 11 alternativas e lições aprendidas. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação.
Hosseini, R. and Brusilovsky, P. (2017). A study of concept-based similarity approaches for recommending program examples. New Review of Hypermedia and Multimedia, 23(3):161–188.
Jain, A. K. (2010). Data clustering: 50 years beyond k-means. Pattern recognition letters, 31(8):651–666.
Kanade, A., Maniatis, P., Balakrishnan, G., and Shi, K. (2020). Learning and evaluating contextual embedding of source code. In International Conference on Machine Learning, pages 5110–5121.
Laranjeira, D. R. et al. (2020). Recomendação de exercícios para alunos de programação em um ambiente de correção automática de códigos. Dissertação. Universidade Federal do Amazonas. Disponível em: [link].
Likas, A., Vlassis, N., and Verbeek, J. J. (2003). The global k-means clustering algorithm. Pattern recognition, 36(2):451–461.
Newman, D., Lau, J. H., Grieser, K., and Baldwin, T. (2010). Automatic evaluation of topic coherence. In Annual Conference of the North American Chapter of the Association for Computational Linguistics (ACL), pages 100–108.
Řehřek, R. and Sojka, P. (2010). Software framework for topic modelling with large corpora.
Rodrigues, M. (2002). Como ensinar programação. Informática–Boletim Informativo Ano I, (01).
Rousseeuw, P. J. (1987). Silhouettes: a graphical aid to the interpretation and validation of cluster analysis. Journal of computational and applied mathematics, 20:53–65.
Scarton, C. E. and Aluísio, S. M. (2010). Análise da inteligibilidade de textos via ferramentas de processamento de língua natural: adaptando as métricas do coh-metrix para o português. Linguamática, 2(1):45–61.
Silva, C. E. P., Solano, J. L. S., dos Santos, A. G., and Reis, J. C. S. (2023). Previsão de reprovações em disciplinas introdutórias de programação: Um estudo em um ambiente de correção automática de códigos. In Anais do Simpósio Brasileiro de Informática na Educação (SBIE), pages 1524–1535.
Trstenjak, B., Mikac, S., and Donko, D. (2014). Knn with tf-idf based framework for text categorization. Procedia Engineering, 69:1356–1364.
Van der Maaten, L. and Hinton, G. (2008). Visualizing data using t-sne. Journal of machine learning research, 9(11).
Zhang, Y., Jin, R., and Zhou, Z.-H. (2010). Understanding bag-of-words model: a statistical framework. International Journal of Machine Learning and Cybernetics, 1:43–52.
Publicado
21/07/2024
Como Citar
MOREIRA, Jonas M.; SILVA, Carlos Eduardo Paulino; SANTOS, André G.; FERREIRA, Lucas N.; REIS, Julio C. S..
Abordagem Não-Supervisionada para Inferência do Tópico de um Exercício de Programação a partir do Código Solução. In: WORKSHOP SOBRE EDUCAÇÃO EM COMPUTAÇÃO (WEI), 32. , 2024, Brasília/DF.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2024
.
p. 842-853.
ISSN 2595-6175.
DOI: https://doi.org/10.5753/wei.2024.3140.