An Open List of Computer Programming Student’s Common Problems and its Leverage in Teaching Practice
Resumo
Educators are frequently baffled by the problems faced and misconceptions held by their novice programming students. Yet, understanding these problems clearly is fundamental for an educator, both to properly evaluate their students as well as to engage them with suitable pedagogical strategies. This paper describes the development of a comprehensive - although not final - open list of problems commonly experienced by novices, focused on procedural and object oriented programming, and language agnostic and as much conceptual/strategic oriented as possible. It shows how the list can be used to improve the evaluation of students in the teaching practice, with targeted tests and detailed evaluation rubrics. It also shows antipattern cards which not only provide examples on how to detect a specific problem, but also indications on its possible origin, and suggestions for pedagogical strategies to overcome it. The paper finally hints at a strategy to crowdsource a battery of standardised/calibrated tests, that can be used both for the formative and summative evaluation of students, as well as to objectively compare different educational strategies and educational systems.
Referências
Kaczmarczyk, L. C., Petrick, E. R., East, J. P., & Herman, G. L. (2010, March). Identifying student misconceptions of programming. In Proceedings of the 41st ACM technical symposium on Computer science education (pp. 107-111).
Pea, R. D. (1986). Language-independent conceptual bugs in novice programming. Journal of Educational Computing Research, 21, 25-36
Mccauley, R., Fitzgerald, S., Lewandowski, G., Murphy, L., Simon, B., Thomas, L., & Zander, C., (2008). Debugging: A review of the literature from an educational perspective. Computer Science Education. 18. 10.1080/08993400802114581.
Holland, S., Griffiths, R., & Woodman, M. (1997, March). Avoiding object misconceptions. In Proceedings of the twenty-eighth SIGCSE technical symposium on Computer science education (pp. 131-134).
Sanders, K., & Thomas, L. (2007). Checklists for grading object-oriented CS1 programs: concepts and misconceptions. ACM SIGCSE Bulletin, 39(3), 166-170.
Goldman, K., Gross, P., Heeren, C., Herman, G. L., Kaczmarczyk, L., Loui, M. C., & Zilles, C. (2010). Setting the scope of concept inventories for introductory computing subjects. ACM Transactions on Computing Education (TOCE), 10(2), 1-29.
Hanks, B. (2007). Problems encountered by novice pair programmers. In S. Fincher, M. Guzdial & R. Anderson (Eds.), Proceedings of the 3rd international computing education research workshop (pp. 159–164). New York: ACM Press
Tew, A. E., & Guzdial, M. (2011, March). The FCS1: a language independent assessment of CS1 knowledge. In Proceedings of the 42nd ACM technical symposium on Computer science education (pp. 111-116).
Parker, M. C., Guzdial, M., & Engleman, S. (2016, August). Replication, validation, and use of a language independent CS1 knowledge assessment. In Proceedings of the 2016 ACM conference on international computing education research (pp. 93-101).
Hamouda, S., Edwards, S. H., Elmongui, H. G., Ernst, J. V., & Shaffer, C. A. (2017). A basic recursion concept inventory. Computer Science Education, 27(2), 121-148.
Porter, L., Zingaro, D., Liao, S. N., Taylor, C., Webb, K. C., Lee, C., & Clancy, M. (2019, July). BDSI: A validated concept inventory for basic data structures. In Proceedings of the 2019 ACM Conference on International Computing Education Research (pp. 111-119).
Farghally, M. F., Koh, K. H., Ernst, J. V., & Shaffer, C. A. (2017, March). Towards a concept inventory for algorithm analysis topics. In Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education (pp. 207-212).
Caceffo, R., Wolfman, S., & Booth, K. (2016). Developing a Computer Science Concept Inventory for Introductory Programming. In Proceedings of the 47th ACM Technical Symposium on Computing Science Education (SIGCSE '16). ACM, New York, NY, USA, 364-369. DOI=http://dx.doi.org/10.1145/2839509.2844559
Pillay, N., & Jugoo, V. R. (2006). An analysis of the errors made by novice programmers in a first course in procedural programming in Java. In Proceedings of the 36th SACLA Conference (pp. 84-93).
Robins, A., Haden, P., & Garner, S. (2006). Problem distributions in a CS1 course. In Proceedings of the 8th Australasian computing education conference (pp. 165-173). Hobart: Australasian Computer Society.
Luxton-Reilly, A., Becker, B. A., Cao, Y., McDermott, R., Mirolo, C., Mühling, A., ... & Whalley, J. (2018, January). Developing assessments to determine mastery of programming fundamentals. In Proceedings of the 2017 ITiCSE Conference on Working Group Reports (pp. 47-69).
Hristova, M., Misra, A., Rutter, M., & Mercuri, R. (2003). Identifying and correcting Java programming errors for introductory computer science students. Inroads, 35(1), 153-156.
Koenig, A. (March-April 1995). “Patterns and Antipatterns
Yu, C. H. (2013) A simple guide to the item response theory (IRT) and Rasch modeling. Retrieved from [link].
Choi, Y., & McClenen, C. (2020). Development of adaptive formative assessment system using computerized adaptive testing and dynamic bayesian networks. Applied Sciences, 10(22), 8196.
Gama, G., Caceffo, R., Souza, R., Benatti, R., Aparecida, T., Garcia, I., & Azevedo, R. (2018). An Antipattern Documentation about Misconceptions related to an Introductory Programming Course in Python. In Technical Report 18-19, Institute of Computing, University of Campinas, SP, Brasil. 106 pages. November, 2018.
Caceffo, R., Frank-Bolton, P., Souza, R., & Azevedo, R. (2019). Identifying and Validating Java Misconceptions Toward a CS1 Concept Inventory. In Innovation and Technology in Computer Science Education (ITiCSE ’19), July 15-17, 2019, Aberdeen, Scotland UK. ACM, New York, NY, USA.
Brown, N., & Altadmri, A. (2017). Novice Java Programming Mistakes: Large-Scale Data vs. Educator Beliefs. ACM Transactions on Computing Education.
Izu, C., Ng, D., & Weerasinghe, A. (2022). Mastery Learning and Productive Failure: Examining Constructivist Approaches to teach CS1. In Proceedings of the 33rd Annual Workshop of the Psychology of Programming Interest Group (PPIG), Milton Keynes, United Kingdom.