Degree of Difficulty of Introductory Programming Problems: A Systematic Literature Review
Abstract
Computer Science 1 (CS1) presents alarming failure rates, being considered one of the disciplines that retain the most in the initial phase of computer education. Implementation of problem solutions is key to introductory programming teaching, and often means solving a large number of problems. This impacts the teacher’s workload as he has to create problem lists and correct them. Due to several constraints, lists are generic, not taking into account student’s specific needs. Aiming the automatic generation of personalized exercise lists, a classified problem database must be implemented. This article presents a Systematic Review of Literature focusing on strategies to define the level of difficulty of introductory programming problems. The review aimed to answer the following question: What is the most appropriate strategy to measure the difficulty of CS1 problems? At the end, it was possible to verify that researchers, when working on this theme, emphasized the concepts involved, aspects related to problem solving and error analysis.
References
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.
