Abstract
Novices tend to make unnecessary errors when they write programming code. Many of these errors can be attributed to the novices’ fragile knowledge of basic programming concepts. Programming instructors also find it challenging to develop teaching and learning strategies that are aimed at addressing the specific programming challenges experienced by their students. This paper reports on a study aimed at (1) identifying the common programming errors made by a select group of novice programmers, and (2) analyzing how these common errors changed at different stages during an academic semester. This exploratory study employed a mixed-methods approach based on the Framework of Integrated Methodologies (FraIM). Manual, structured content analysis of 684 programming artefacts, created by 38 participants and collected over an entire semester, lead to the identification of 21 common programming errors. The identified errors were classified into four categories: syntax, semantic, logic, and type errors. The results indicate that semantic and type errors occurred most frequently. Although common error categories are likely to remain the same from one assignment to the next, the introduction of more complex programming concepts towards the end of the semester could lead to an unexpected change in the most common error category. Knowledge of these common errors and error categories could assist programming instructors in adjusting their teaching and learning approaches for novice programmers.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Ahadi, A., Lister, R., Lal, S., Hellas, A.: Learning programming, syntax errors and institution-specific factors. In: Proceedings of the 20th Australasian Computing Education Conference, pp. 90–96. ACM, New York (2018). https://doi.org/10.1145/3160489.3160490
Albrecht, E., Grabowski, J.: Sometimes it's just sloppiness-studying students’ programming errors and misconceptions. In: Proceedings of the 51st ACM Technical Symposium on Computer Science Education, pp. 340–345. ACM, New York (2020). https://doi.org/10.1145/3328778.3366862
Alqadi, B.S., Maletic, J.I.: An empirical study of debugging patterns among novice programmers. In: Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education, pp. 15–20. ACM, New York (2017). https://doi.org/10.1145/3017680.3017761
Altadmri, A., Brown, N.C.C.: 37 million compilations: investigating novice programming mistakes in large-scale student data. In: Proceedings of the 46th ACM Technical Symposium on Computer Science Education, pp. 522–527. ACM, New York (2015). https://doi.org/10.1145/2676723.2677258
Altadmri, A., Kölling, M., Brown, N.C.C.: The cost of syntax and how to avoid it: text versus frame-based editing. In: Proceedings of the 2016 IEEE 40th Annual Computer Software and Applications Conference (COMPSAC), pp. 748–753. IEEE (2016). https://doi.org/10.1109/COMPSAC.2016.204
Alzahrani, N., Vahid, F., Edgcomb, A., Lysecky, R., Lysecky, S.: An analysis of common errors leading to excessive student struggle on homework problems in an introductory programming course. In:Â Proceedings of ASEE Annual Conference. ASEE, Riverside (2018)
Becker, B.A., et al.: Unexpected tokens: a review of programming error messages and design guidelines for the future. In: Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education, pp. 253–254. ACM, New York (2019). https://doi.org/10.1145/3304221.3325539
Becker, B.A., Mooney, C.: Categorizing compiler error messages with principal component analysis. In: Proceedings of the 12th China-Europe International Symposium on Software Engineering Education (CEISEE 2016), pp. 28–29. CEISEE, Shenyang (2016)
Becker, B.A.: An effective approach to enhancing compiler error messages. In: Proceedings of the 47th ACM Technical Symposium on Computing Science Education, pp. 126–131. ACM, New York (2016). https://doi.org/10.1145/2839509.2844584
Brass, S., Goldberg, C.: Semantic errors in SQL queries: a quite complete list. J. Syst. Softw. 79(5), 630–644 (2006). https://doi.org/10.1016/j.jss.2005.06.028
Bosse, Y., Redmiles, D., Gerosa, M.A.: Pedagogical content for professors of introductory programming courses. In: Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education, pp. 429–435. ACM, New York (2019). https://doi.org/10.1145/3304221.3319776
Brown, N.C., Altadmri, A.: Investigating novice programming mistakes: Educator beliefs vs. student data. In: Proceedings of the 10th Annual Conference on International Computing Education Research, pp. 43–50. ACM, New York (2014). https://doi.org/10.1145/2632320.2632343
Canedo, E.D., Santos, G.A., Leite, L.L.: An assessment of the teaching-learning methodologies used in the introductory programming courses at a Brazilian university. Inform. Educ. 17(1), 45–59 (2018). https://doi.org/10.15388/infedu.2018.03
Denny, P., Luxton-Reilly, A., Carpenter, D.: Enhancing syntax error messages appears ineffectual. In: Proceedings of the 2014 Conference on Innovation and Technology In Computer Science Education, pp. 273–278. ACM, New York (2014). https://doi.org/10.1145/2591708.2591748
Denny, P., Luxton, R.A., Tempero, E.: All syntax errors are not equal. In: Proceedings of the 17th ACM Annual Conference on Innovation and Technology in Computer Science Education, pp. 75–80. ACM, New York (2012). https://doi.org/10.1145/2325296.2325318
Ettles, A., Luxton-Reilly, A., Denny, P.: Common logic errors made by novice programmers. In: Proceedings of the 20th Australasian Computing Education Conference, pp. 83–89. ACM, New York (2018). https://doi.org/10.1145/3160489.3160493
Farrokhi, F., Mahmoudi-Hamidabad, A.: Rethinking convenience sampling: defining quality criteria. Theory Pract. Lang. Stud. 2(4), 784–792 (2012). https://doi.org/10.4304/tpls.2.4.784-792
Figueiredo, J., Lopes, N., GarcĂa-Peñalvo, F.J.: Predicting student failure in an introductory programming course with multiple back-propagation. In: Proceedings of the 7th International Conference on Technological Ecosystems for Enhancing Multiculturality, pp. 44–49. ACM, New York (2019). https://doi.org/10.1145/3362789.3362925
Hristova, M., Misra, A., Rutter, M., Mercuri, R.: Identifying and correcting Java programming errors for introductory computer science students. ACM SIGCSE Bull. 35(1), 153–156 (2003). https://doi.org/10.1145/611892.611956
Johnson, W.L.: Understanding and debugging novice programs. Artif. Intell. 42(1), 51–97 (1990). https://doi.org/10.1016/0004-3702(90)90094-G
Jackson, J., Cobb, M., Carver, C.: Identifying top Java errors for novice programmers. In: Proceedings Frontiers in Education 35th Annual Conference, p. T4C. IEEE, Indianapolis (2005). https://doi.org/10.1109/FIE.2005.1611967
Kazeem, O.N., Abiola, O.A., Akinola, S.O.: Bug pattern analysis of codes produced by beginner programmers using association rule mining technique. Univ. Ibadan J. Sci. Logics ICT Res. 4(1), 10–24 (2020)
Koerber, A., McMichael, L.: Qualitative sampling methods: a primer for technical communicators. J. Bus. Tech. Commun. 22(4), 454–473 (2008). https://doi.org/10.1177/1050651908320362
Lakkaraju, H., et al.: A machine learning framework to identify students at risk of adverse academic outcomes. In: Proceedings of the 21st ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp. 1909–1918. ACM, New York (2015). https://doi.org/10.1145/2783258.2788620
Malik, S.I., Mathew, R., Hammood, M.M.: PROBSOL: a web-based application to develop problem-solving skills in introductory programming. In: Al-Masri, A., Curran, K. (eds.) Smart Technologies and Innovation for a Sustainable Future. ASTI, pp. 295–302. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-01659-3_34
Malik, S.I., Mathew, R., Al-Nuaimi, R., Al-Sideiri, A., Coldwell-Neilson, J.: Learning problem solving skills: comparison of E-learning and M-learning in an introductory programming course. Educ. Inf. Technol. 24(5), 2779–2796 (2019). https://doi.org/10.1007/s10639-019-09896-1
McCall, D., Kölling, M.: A new look at novice programmer errors. ACM Trans. Comput. Educ. 19(4), 1–30 (2019). https://doi.org/10.1145/3335814
McCall, D., Kölling, M.: Meaningful categorisation of novice programmer errors. In: 2014 IEEE Frontiers in Education Conference (FIE) Proceedings, pp. 1–8. IEEE (2014). https://doi.org/10.1109/FIE.2014.7044420
Plonka, L., Sharp, H., Van der Linden, J., Dittrich, Y.: Knowledge transfer in pair programming: an in-depth analysis. Int. J. Hum. Comput. Stud. 73, 66–78 (2015). https://doi.org/10.1016/j.ijhcs.2014.09.001
Plowright, D.: Using Mixed Methods: Frameworks for an Integrated Methodology. SAGE, London (Kindle edition) (2011)
Qian, Y., Lehman, J.: An investigation of high school students’ errors in introductory programming: a data-driven approach. J. Educ. Comput. Res. 58(5), 919–945 (2020). https://doi.org/10.1177/0735633119887508
Rahman, M., Watanobe, Y., Nakamura, K.: Source code assessment and classification based on estimated error probability using attentive LSTM language model and its application in programming education. Appl. Sci. 10(8), 2973 (2020). https://doi.org/10.3390/app10082973
Robins, A.V.: Novice programmers and introductory programming. In: Fincher, S., Robins, A. (eds.) The Cambridge Handbook of Computing Education Research, pp. 327–376. Cambridge University Press, Cambridge (2019)
Schliep, P.A.: Usability of error messages for introductory students. Sch. Horiz. Univ. Minn. Morris Undergrad. J. 2(2), 5–11 (2015)
Smith, R., Rixner, S.: The error landscape: characterizing the mistakes of novice programmers. In: Proceedings of the 50th ACM Technical Symposium on Computer Science Education, pp. 538–544. ACM, New York (2019). https://doi.org/10.1145/3287324.3287394
Steenmeijer, L.D.: Increasing the consistency of feedback on programming code by using a tagging system (Bachelor's thesis). University of Twente, Twente (2020). http://essay.utwente.nl/82198/
Tabanao, E.S., Rodrigo, M.M.T., Jadud, M.C.: Identifying at-risk novice java programmers through the analysis of online protocols. In: Proceedings of Philippine Computing Science Congress, pp. 1–8. Archīum Ateneo (2008)
Türkmen, G., Caner, S.: The investigation of novice programmers’ debugging behaviors to inform intelligent e-learning environments: a case study. Turkish Online J. Dist. Educ. 21(3), 142–155 (2020). https://doi.org/10.17718/tojde.762039
Tuugalei, I., Mow, I.C.: Analyses of student programming errors in java programming courses. J. Emerg. Trends Comput. Inf. Sci. 3(5), 739–749 (2012)
Zehetmeier, D., Böttcher, A., Brüggemann-Klein, A., Thurner, V.: Development of a classification scheme for errors observed in the process of computer programming education. In: Proceedings of the 1st International Conference on Higher Education Advances (Head 2015), pp. 475–484. Universitat Politècnica de València, València (2015). https://doi.org/10.4995/HEAd15.2015.356
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2022 Springer Nature Switzerland AG
About this paper
Cite this paper
Mase, M.B., Nel, L. (2022). Common Code Writing Errors Made by Novice Programmers: Implications for the Teaching of Introductory Programming. In: Leung, W.S., Coetzee, M., Coulter, D., Cotterrell, D. (eds) ICT Education. SACLA 2021. Communications in Computer and Information Science, vol 1461. Springer, Cham. https://doi.org/10.1007/978-3-030-95003-3_7
Download citation
DOI: https://doi.org/10.1007/978-3-030-95003-3_7
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-95002-6
Online ISBN: 978-3-030-95003-3
eBook Packages: Computer ScienceComputer Science (R0)