Investigando o Uso de Testes para Apoiar a Resolução de Problemas de Programação
Abstract
Introductory programming courses use exercises to build skills and assess student performance. However, before developing the solution, students need to understand the specifications. In this work, we evaluate a test-based strategy to clarify the specification of problems and improve their resolution. We created the ‘Oracle’, which allows students to interact with reference solutions and compare it to other problem solving methods. In the empirical study carried out, we observed a significant improvement in student performance, reducing the time to find the correct solution in 65% of cases and the number of submissions to the system in 68% of cases, until the correct solution.
References
Almeida, A., Araújo, E., and Figueiredo, J. (2020). Avaliando a construção do conhecimento em programação através da taxonomia solo. In Anais do XXXI Simpósio Brasileiro de Informática na Educação, pages 1813–1822. SBC.
Basu, S., Wu, A., Hou, B., and DeNero, J. (2015). Problems before solutions: Automated problem clarification at scale. In Proceedings of the Second (2015) ACM Conference on Learning@ Scale, pages 205–213.
Beck, K. (2003). Test-driven development: by example. Addison-Wesley Professional.
Denny, P., Prather, J., Becker, B. A., Albrecht, Z., Loksa, D., and Pettit, R. (2019). A closer look at metacognitive scaffolding: Solving test cases before programming. In Proceedings of the 19th Koli Calling international conference on computing education research, pages 1–10.
Edwards, S. H. and Perez-Quinones, M. A. (2008). Web-cat: automatically grading programming assignments. In Proceedings of the 13th annual conference on Innovation and technology in computer science education, pages 328–328.
Garner, S., Haden, P., and Robins, A. (2005). My program is correct but it doesn’t run: a preliminary investigation of novice programmers’ problems. In Proceedings of the 7th Australasian conference on Computing education-Volume 42, pages 173–180.
Kadar, R., Wahab, N. A., Othman, J., Shamsuddin, M., and Mahlan, S. B. (2021). A study of difficulties in teaching and learning programming: a systematic literature review. Int. J. Acad. Res. Progress. Educ. Dev, 10:591–605.
Lahtinen, E., Ala-Mutka, K., and Järvinen, H.-M. (2005). A study of the difficulties of novice programmers. Acm sigcse bulletin, 37(3):14–18.
McCracken, M., Almstrum, V., Diaz, D., Guzdial, M., Hagan, D., Kolikant, Y. B.-D., Laxer, C., Thomas, L., Utting, I., and Wilusz, T. (2001). A multi-national, 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, ITiCSE-WGR ’01, page 125–180, New York, NY, USA. Association for Computing Machinery.
Neto, V. L., Coelho, R., Leite, L., Guerrero, D. S., and Mendonça, A. P. (2013). Popt: a problem-oriented programming and testing approach for novice students. In 2013 35th international conference on software engineering (ICSE), pages 1099–1108. IEEE.
Paiva, F., Souza, G., Nascimento, J., and Martins, R. (2021). Introdução a python com aplicações de sistemas operacionais.
Polya, G. and Conway, J. (2004). How to Solve It: A New Aspect of Mathematical Method. Penguin mathematics. Princeton University Press.
Wrenn, J. and Krishnamurthi, S. (2019). Executable examples for programming problem comprehension. In Proceedings of the 2019 ACM Conference on International Computing Education Research, pages 131–139.
