Grau de Dificuldade de Problemas de Programação Introdutória: Uma Revisão Sistemática da Literatura
Resumo
Ciência da Computação 1 (CS1) apresenta números alarmantes com relação à taxa de reprovação, sendo considerada uma das disciplinas que mais reprovam na fase inicial de formação em Computação. Resolver problemas com implementações é fundamental para a aprendizagem de programação introdutória, e quase sempre significa resolver um grande número de problemas. Isso aumenta a carga de trabalho do professor, pois ele precisa criar listas de problemas e corrigi-los. Devido a várias restrições, as listas são genéricas, não levando em conta as necessidades específicas do aluno. Visando a geração automática de listas de exercícios personalizadas, um banco de dados de problemas classificados precisa ser criado. Este artigo apresenta uma Revisão Sistemática de Literatura focada em estratégias para definir o grau de dificuldade de problemas de programação introdutória. A revisão teve como objetivo responder à seguinte pergunta: Qual é a estratégia mais adequada para medir a dificuldade dos problemas da CS1? Ao final, foi possível verificar que os pesquisadores, ao trabalharem sobre esse tema, enfatizaram os conceitos envolvidos, aspectos relacionados à solução de problemas e análise de erros.
Referências
Bryce, R. C., Cooley, A., Hansen, A., and Hayrapetyan, N. (2010). A one year empirical study of student programming bugs. In Frontiers in Education Conference (FIE), 2010 IEEE, pages F1G–1. IEEE.
Cherenkova, Y., Zingaro, D., and Petersen, A. (2014). Identifying challenging cs1 concepts in a large problem dataset. In Proceedings of the 45th ACM technical symposium on Computer science education, pages 695–700. ACM.
Cukierman, H. L., Teixeira, C., and Prikladnicki, R. (2007). Um olhar sociotécnico sobre a engenharia de software. Revista de Informática Teórica e Aplicada, 14(2):199–219.
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. ACM.
Kitchenham, B. (2004). Procedures for performing systematic reviews. Keele, UK, Keele University, 33(2004):1–26.
Kramer, J. (2007). Is abstraction the key to computing? Communications of the ACM, 50(4):36–42.
Lakanen, A.-J., Lappalainen, V., and Isomöttönen, V. (2015). Revisiting rainfall to explore exam questions and performance on cs1. In Proceedings of the 15th Koli Calling Conference on Computing Education Research, pages 40–49. ACM.
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, pages 93–99. ACM.
Malik, S. I. and Coldwell-Neilson, J. (2016). A model for teaching an introductory programming course using adri. Education and Information Technologies, pages 1–32.
Martins, S. W., Mendes, A. J., and Figueiredo, A. D. (2010). Comunidades de investigação em programação: Uma estratégia de apoio ao aprendizado inicial de programação. IEEE-RITA, 5(1):39–46.
Noschang, L. F., Fillipi Pelz, E. A., and Raabe, A. (2014). Portugol studio: Uma ide para iniciantes em programaçao. Anais do CSBC/WEI, pages 535–545.
Oliveira, C. M., Pimentel, A., and Maschio, E. (2016). Nextstep: Um protótipo para o sequenciamento inteligente e adaptativo de enunciados em programação de computadores. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação, volume 5, page 1238.
Simon (2011). Assignment and sequence: Why some students can’t recognise a simple swap. Koli Calling ’11.
Vieira, M. A. et al. (2016). Modelagem de espaços inteligentes pessoais e espaços inteligentes fixos no contexto de cenários de computação ubíqua.
Watson, C. and Li, F. W. (2014). Failure rates in introductory programming revisited. In Proceedings of the 2014 conference on Innovation & technology in computer science education, pages 39–44. ACM.