Um Arcabouço para Construção de Mecanismos de Análise de Códigos de Programação Introdutória
Resumo
O presente trabalho apresenta um arcabouço para a construção de mecanismos de análise automática de exercícios de programação introdutória. Esse arcabouço consiste em uma estrutura que possibilita a combinação de diferentes tipos de mecanismos de análise, provendo a fácil configuração de diversas famílias de analisadores. Para a avaliação do arcabouço foi realizado um estudo com 816 soluções submetidas por estudantes de duas turmas introdutórias de programação. Os resultados apontam os seguintes grupos de estudantes: não conseguiram ultrapassar a barreira sintática; não conseguiram utilizar os construtos da linguagem da maneira correta; não conseguiram propor soluções estruturalmente coesas. Além disso, foi possível identificar um grupo de estudantes que submeteram soluções altamente coesas com a solução esperada pelo professor da disciplina. Por fim, foi possível identificar um conjunto de estudantes que submeteram soluções contendo um conjunto de construções não esperadas, mas que se mostraram bastante coerentes com a proposta do problema, demonstrando um comportamento de programação excepcional.
Palavras-chave:
Mecanismos de Análise, Programação Introdutória, Arcabouço, Exercícios de Programação
Referências
Ala-Mutka, K.M. (2005). A Survey of Automated Assessment Approaches for Programming Assignments. Computer Science Education, 15(2):83–102.
Breuker, D.M., Derriks, J., and Brunekreef, J. (2011). Measuring static quality of student code. In Proceedings of the 16th ACM conference on Innovation and technology in computer science education-ITiCSE’11, page 13. ACM Press.
Bryce, R.C., Mayo, Q., Andrews, A., Bokser, D., Burton, M., Day, C., Gonzolez, J., and Noble, T. (2013). BugCatcher: A System for Software Testing Competitions. In ACM Technical Symposium on Computer Science Education, page 513. ACM Press.
Chaves, J.O.M., Castro, A.F., Lima, R.W., Lima, M.V.A., and Ferreira, K.H.A. (2013). Integrando Moodle e Juízes Online no Apoio a Atividades de Programação. In Simpósio Brasileiro de Informática na Educação, pages 244–254. Sociedade Brasileira de Computação.
de Souza, D.M., Maldonado, J.C., and Barbosa, E.F. (2011). ProgTest: An environment for the submission and evaluation of programming assignments based on testing activities. In IEEE Conference on Software Engineering Education and Training, pages 1–10. IEEE.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995). Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc.
Kilpelainen, P. and Mannila, H. (1995). Ordered and unordered tree inclusion. SIAM J. Comput., 24(2):340–356.
Levenshtein, V. (1966). Binary Codes Capable of Correcting Deletions, Insertions and Reversals. Soviet Physics Doklady, 10(8):707–710.
McCracken, M., Wilusz, T., Almstrum, V., Diaz, D., Guzdial, M., Hagan, D., Kolikant, Y.B.-D., Laxer, C., Thomas, L., and Utting, I. (2001). A multinational, multi-institutional study of assessment of programming skills of first-year CS students. In Working group reports from ITiCSE on Innovation and technology in computer science education, page 125. ACM Press.
McGettrick, A., Boyle, R., Ibbett, R., Lloyd, J., Lovegrove, G., and Mander, K. (2005). Grand Challenges in Computing: Education – A Summary. The Computer Journal, 48(1):42–48.
Michalewicz, Z. and Fogel, D.B. (2004). How to Solve It: Modern Heuristics. Springer, 2nd edition.
Pears, A., Seidman, S., Malmi, L., Mannila, L., Adams, E., Bennedsen, J., Devlin, M., and Paterson, J. (2007). A survey of literature on the teaching of introductory programming. In ACM Technical Symposium on Computer Science Education, volume 39, pages 204–223.
Pelz, F.D., de Jesus, E.A., and Raabe, A.L.A. (2012). Um Mecanismo para Correção Automática de Exercícios Práticos de Programação Introdutória. In Simpósio Brasileiro de Informática na Educação. Sociedade Brasileira de Computação.
Petit, J., Giménez, O., and Roura, S. (2012). Jutge.org: An Educational Programming Judge. In ACM Technical Symposium on Computer Science Education, page 445. ACM Press.
Robins, A., Rountree, J., and Rountree, N. (2003). Learning and teaching programming: A review and discussion. Computer Science Education, 13(2):137–172.
Rong, G., Li, J., Xie, M., and Zheng, T. (2012). The Effect of Checklist in Code Review for Inexperienced Students: An Empirical Study. In IEEE Conference on Software Engineering Education and Training, pages 120–124. IEEE.
Wang, Y., Li, H., Feng, Y., Jiang, Y., and Liu, Y. (2012). Assessment of programming language learning based on peer code review model: Implementation and experience report. Computers & Education, 59(2):412–422.
Breuker, D.M., Derriks, J., and Brunekreef, J. (2011). Measuring static quality of student code. In Proceedings of the 16th ACM conference on Innovation and technology in computer science education-ITiCSE’11, page 13. ACM Press.
Bryce, R.C., Mayo, Q., Andrews, A., Bokser, D., Burton, M., Day, C., Gonzolez, J., and Noble, T. (2013). BugCatcher: A System for Software Testing Competitions. In ACM Technical Symposium on Computer Science Education, page 513. ACM Press.
Chaves, J.O.M., Castro, A.F., Lima, R.W., Lima, M.V.A., and Ferreira, K.H.A. (2013). Integrando Moodle e Juízes Online no Apoio a Atividades de Programação. In Simpósio Brasileiro de Informática na Educação, pages 244–254. Sociedade Brasileira de Computação.
de Souza, D.M., Maldonado, J.C., and Barbosa, E.F. (2011). ProgTest: An environment for the submission and evaluation of programming assignments based on testing activities. In IEEE Conference on Software Engineering Education and Training, pages 1–10. IEEE.
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995). Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc.
Kilpelainen, P. and Mannila, H. (1995). Ordered and unordered tree inclusion. SIAM J. Comput., 24(2):340–356.
Levenshtein, V. (1966). Binary Codes Capable of Correcting Deletions, Insertions and Reversals. Soviet Physics Doklady, 10(8):707–710.
McCracken, M., Wilusz, T., Almstrum, V., Diaz, D., Guzdial, M., Hagan, D., Kolikant, Y.B.-D., Laxer, C., Thomas, L., and Utting, I. (2001). A multinational, multi-institutional study of assessment of programming skills of first-year CS students. In Working group reports from ITiCSE on Innovation and technology in computer science education, page 125. ACM Press.
McGettrick, A., Boyle, R., Ibbett, R., Lloyd, J., Lovegrove, G., and Mander, K. (2005). Grand Challenges in Computing: Education – A Summary. The Computer Journal, 48(1):42–48.
Michalewicz, Z. and Fogel, D.B. (2004). How to Solve It: Modern Heuristics. Springer, 2nd edition.
Pears, A., Seidman, S., Malmi, L., Mannila, L., Adams, E., Bennedsen, J., Devlin, M., and Paterson, J. (2007). A survey of literature on the teaching of introductory programming. In ACM Technical Symposium on Computer Science Education, volume 39, pages 204–223.
Pelz, F.D., de Jesus, E.A., and Raabe, A.L.A. (2012). Um Mecanismo para Correção Automática de Exercícios Práticos de Programação Introdutória. In Simpósio Brasileiro de Informática na Educação. Sociedade Brasileira de Computação.
Petit, J., Giménez, O., and Roura, S. (2012). Jutge.org: An Educational Programming Judge. In ACM Technical Symposium on Computer Science Education, page 445. ACM Press.
Robins, A., Rountree, J., and Rountree, N. (2003). Learning and teaching programming: A review and discussion. Computer Science Education, 13(2):137–172.
Rong, G., Li, J., Xie, M., and Zheng, T. (2012). The Effect of Checklist in Code Review for Inexperienced Students: An Empirical Study. In IEEE Conference on Software Engineering Education and Training, pages 120–124. IEEE.
Wang, Y., Li, H., Feng, Y., Jiang, Y., and Liu, Y. (2012). Assessment of programming language learning based on peer code review model: Implementation and experience report. Computers & Education, 59(2):412–422.
Publicado
03/11/2014
Como Citar
SILVA, Marlos Tacio; COSTA, Evandro de Barro; BARBOSA, Paulo Henrique; CAVALCANTE, Juliana de Carvalho.
Um Arcabouço para Construção de Mecanismos de Análise de Códigos de Programação Introdutória. In: SIMPÓSIO BRASILEIRO DE INFORMÁTICA NA EDUCAÇÃO (SBIE), 25. , 2014, Dourados/MS.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2014
.
p. 1083-1092.
DOI: https://doi.org/10.5753/cbie.sbie.2014.1083.
