Journals / Ankara Üniversitesi Eğitim Bilimleri Fakültesi Dergisi / 2026 / Cilt: 59 Sayı: 2

Difficulties of Learning Programming in Higher Education: A Systematic Literature Review of Recent Research

Yükseköğretimde Programlama Öğrenmenin Zorlukları: Son Araştırmalara İlişkin Sistematik Bir Literatür Taraması

Filiz Kalelioğlu(BAŞKENT ÜNİVERSİTESİ)0000-0002-7729-5674
Fatma Keskinkılıç(KIRŞEHİR AHİ EVRAN ÜNİVERSİTESİ)0000-0003-3619-4620
Pages
771–835
Publication Date
2026-08-06
🏛️Bibliographic metadata and full text access for this article are provided via DergiPark.
DergiPark Record ↗
✨

AI Summary & Key Takeaways

AI Insight
⚡ TL;DR(Too Long; Didn't Read)

Unlike many studies that focus only on specific challenges, this review provides a comprehensive analysis, offering strategies for both students and instructors to overcome programming difficulties.

📌 3 Key Takeaways

🎯
Objective & Hypothesis:The difficulty of learning computer programming has been widely discussed by researchers.
📊
Key Findings & Data:We reviewed studies from multiple online databases, initially identifying 648 studies, of which 92 focused on programming difficulties.
💡
Conclusion & Impact:Unlike many studies that focus only on specific challenges, this review provides a comprehensive analysis, offering strategies for both students and instructors to overcome programming difficulties.
🔬Design:Review & Systematic Survey
📍Scope:Comprehensive Sample
⚙️Variables:programlama öğrenme zorlukları · programlama zorlukları · programlamaya giriş dersleri

Abstract

The difficulty of learning computer programming has been widely discussed by researchers. Many factors contribute to the challenges faced in teaching and learning programming. This systematic review aims to identify these difficulties in higher education introductory programming courses and explore instructional solutions. We reviewed studies from multiple online databases, initially identifying 648 studies, of which 92 focused on programming difficulties. After applying inclusion and exclusion criteria, 23 articles were selected for analysis. The factors found to affect students’ programming learning were lack of knowledge about programming concepts and constructs, misconceptions related to syntax and semantics, programming skills, problem-solving skills, and the inability to create a mental model of the computer. When the suggested instructional solutions for the concepts and processes that students have the most difficulty with were examined, suggestions emerged to improve their programming skills, solution designs, and the coding process. Unlike many studies that focus only on specific challenges, this review provides a comprehensive analysis, offering strategies for both students and instructors to overcome programming difficulties.

Özet

Bilgisayar programlama öğrenmenin zorluğu araştırmacılar tarafından geniş çapta tartışılmıştır. Programlama öğretimi ve öğreniminde karşılaşılan zorluklara birçok faktör etki etmektedir. Bu sistematik derlemenin amacı, yükseköğretimde programlamaya giriş derslerinde karşılaşılan bu zorlukları tespit etmek ve öğretimsel çözümleri araştırmaktır. Birden fazla çevrimiçi veri tabanında yer alan çalışmalar incelenmiş, 92'si programlama zorluklarına odaklanan 648 çalışma tespit edilmiştir. Makale seçme kriterleri uygulandıktan sonra, analiz için 23 makale seçilmiştir. Öğrencilerin programlama öğrenimini etkileyen faktörler arasında programlama kavramları ve yapıları hakkında bilgi eksikliği, sözdizimi ve anlambilim ile ilgili kavram yanılgıları, programlama becerileri, problem çözme becerileri ve bilgisayarın zihinsel bir modelini oluşturamama yer almaktadır. Öğrencilerin en çok zorlandıkları kavram ve süreçler için önerilen öğretimsel çözümler incelendiğinde, programlama becerilerini, çözüm tasarımlarını ve kodlama sürecini geliştirmeye yönelik öneriler ortaya çıkmıştır. Sadece belirli zorluklara odaklanan birçok çalışmanın aksine, bu derleme kapsamlı bir analiz sunarak hem öğrenciler hem de eğitmenler için programlama zorluklarının üstesinden gelmeye yönelik stratejiler önermektedir.

🔖

Cite This Article

Kalelioğlu, F., Keskinkılıç, F. (2026). Difficulties of Learning Programming in Higher Education: A Systematic Literature Review of Recent Research. Ankara Üniversitesi Eğitim Bilimleri Fakültesi Dergisi, Cilt: 59 Sayı: 2, 771–835. https://doi.org/10.30964/auebfd.1703365

📄 Full Text PDF Viewer

📄

PDF görüntüleyici hazırlanıyor...

References (48)

  1. Ahadi, A. (2016). Early Identification of Novice Programmers’ Challenges in Coding Using Machine Learning Techniques. In ICER ’16: Proceedings of the 2016 ACM Conference on International Computing Education Research, 263-264, ACM. https://doi.org/10.1145/2960310.2960339
  2. Ahmadzadeh, M., Elliman, D., & Higgins, C. (2005). An Analysis of Patterns of Debugging Among Novice Computer Science Students. In ITiCSE ’05: Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science education, 84-88, ACM. https://doi.org/10.1145/1067445.1067472
  3. Ahmed, R. A., Mahmood, S. M.-R., Nabi, R. M., & Hussein, D. L. (2018). The Impact of Teaching Materials on Learning Computer Programming Languages in Kurdistan Region Universities and Institutes. Kurdistan Journal of Applied Research, 3(1), 27-33. https://doi.org/10.24017/science.2018.1.7
  4. Alammary, A. (2019). Blended learning models for introductory programming courses: A systematic review. PLoS ONE, 14(9), e0221765. https://doi.org/10.1371/journal.pone.0221765
  5. Alasmari, O. A., Singer, J., & Bikanga Ada, M. (2023, September). Do current online coding tutorial systems address novice programmer difficulties? In Proceedings of the 15th International Conference on Education Technology and Computers (pp. 242-248).
  6. Aleksić, V., & Ivanović, M. (2016). Introductory Programming Subject in European Higher Education. Informatics in Education, 15(2), 163-182. https://doi.org/10.15388/infedu.2016.09
  7. Alhazbi, S. (2014). Using E-Journaling to Improve Self-Regulated Learning in Introductory Computer Programming Course. In Proceedings of 2014 IEEE Global Engineering Education Conference (EDUCON). IEEE. http://doi.org/10.1109/EDUCON.2014.6826116
  8. Andrzejewska, M. (2018). Difficulties in learning introductory programming – student’s perspective. Pedagogical University of Cracow.
  9. Anyango, J. T., & Suleman, H. (2018). Teaching Programming in Kenya and South Africa: What is difficult and is it universal? In Koli Calling ’18: Proceedings of the 18th Koli Calling International Conference on Computing Education Research, Article 24. ACM. https://doi.org/10.1145/3279720.3279744
  10. Austin, T., Horstmann, C., & Vu, H. (2018). Explicit Short Program Practice in a Programming Languages Course. Journal of Computing Sciences in Colleges, 33(4), 114-122. https://dl.acm.org/doi/abs/10.5555/3199572.3199588
  11. Bakar, M. A., Mukhtar, M., & Khalid, F. (2020). The Effect of Turtle Graphics Approach on Students’ Motivation to Learn Programming: A Case Study in a Malaysian University. International Journal of Information and Education Technology, 10(4), 290-297. https://doi.org/10.18178/ijiet.2020.10.4.1378
  12. Becker, B. A., Glanville, G., Iwashim, R., McDonnell, C., Goslin, K., & Mooney, C. (2016). Effective compiler error message enhancement for novice programming students. Computer Science Education, 26(2-3), 148-175. https://doi.org/10.1080/08993408.2016.1225464
  13. Ben-Ari, M. (1998). Constructivism in computer science education. ACM SIGCSE Bulletin, 30(1), 257–261. https://doi.org/10.1145/274790.274308
  14. Berry, M., & Kölling, M. (2014, June). The state of play: A notional machine for learning programming. In Proceedings of the 2014 conference on Innovation & technology in computer science education (pp. 21-26). https://doi.org/10.1145/2591708.2591721
  15. Berssanette, J. H., & de Francisco, A. C. (2021). Cognitive load theory in the context of teaching and learning computer programming: A systematic literature review. IEEE Transactions on Education, 65(3), 440-449. https:/doi.org/10.1109/TE.2021.3127215
  16. Beynon, M. (2015). Constructivist computer science education reconstructed. Innovation in Teaching and Learning in Information and Computer Sciences, 8(2), 73–90. https://doi.org/10.11120/ital.2009.08020073
  17. Bolotbaev, D., & Temirov, M. (2025). The use of artificial intelligence in teaching programming to students. Bulletin of the Jusup Balasagyn Kyrgyz National University, 17(2), 79–86. https://doi.org/10.58649/1694-8033-2025-2(122)-79-86
  18. Bosse, Y., & Gerosa, M. A. (2016). Why is programming so difficult to learn? Patterns of Difficulties Related to Programming Learning. ACM SIGSOFT Software Engineering Notes, 41(6), 1-6. https://doi.org/10.1145/3011286.3011301
  19. Braun, V., & Clarke, V. (2006). Using thematic analysis in psychology. Qualitative research in psychology, 3(2), 77-101. https://doi.org/10.1191/1478088706qp063oa
  20. BMJ, (2021). The PRISMA 2020 statement: an updated guideline for reporting systematic reviews. https://doi.org/10.1136/bmj.n71
  21. Cheah, C. S. (2020). Factors Contributing to the Difficulties in Teaching and Learning of Computer Programming: A Literature Review. Contemporary Educational Technology, 12(2), Article ep272. https://doi.org/10.30935/cedtech/8247
  22. Dickson, P. E., Brown, N. C., & Becker, B. A. (2020, June). Engage against the machine: Rise of the notional machines as effective pedagogical devices. In Proceedings of the 2020 ACM Conference on Innovation and Technology in Computer Science Education (pp. 159-165). https:/doi.org/10.1145/3341525.3387404
  23. Dwiantoro, B., Sujana, Y., & Hatta, P. (2025). The Role of Artificial Intelligence in Programming Education and Its Impact on the Learning Process. Indonesian Journal of Informatics Education, 9(1), 53. https://doi.org/10.20961/ijie.v9i1.103884
  24. Fojcik, M., Fojcik, M. K., Høyland, S. O., & Hoem, J. Ø., (2022). Challenges In Teaching Programming. Education and New Developments, 2022. https:/doi.org/10.36315/2022v1end034
  25. Fraenkel, J. R., Wallen, N. E., & Hyun, H. H. (2012). How to design and evaluate research in education (7th ed.). McGraw-Hill.
  26. Gomes, A., & Mendes, A. J. (2007, September 3-7). Learning to Program - Difficulties and Solutions.International Conference on Engineering Education, Coimbra, Portugal. https://www.ineer.org/Events/ICEE2007/papers/411.pdf
  27. Gwet, K. L. (2019). irrCAC: Computing Chance-Corrected Agreement Coefficients (CAC). https://CRAN.R-project.org/package=irrCAC
  28. Jenkins, T. (2002). On the Difficulty of Learning to Program.3rd Annual LTSN-ICS Conference, Loughborough University. LTSN Centre for Information and Computer Sciences.
  29. Johnson, F., McQuistin, S., & O’Donnell, J. (2020). Analysis of student misconceptions using Python as an introductory programming language. In Proceedings of the 4th Conference on Computing Education Practice 2020 (CEP 2020) (Article 4, 4 pages). Association for Computing Machinery. https://dl.acm.org/doi/10.1145/3372356.3372360
  30. Kadar, R., Wahab, N. A., Othman, J., Shamsuddin, M., & Mahlan, S. B. (2021). A Study of Difficulties in Teaching and Learning Programming: A Systematic Literature Review. International Journal of Academic Research in Progressive Education and Development, 10(3), 591–605. https://doi.org/10.6007/IJARPED/v10-i3/11100
  31. Kitchenham, B. (2004). Procedures for performing systematic reviews. Joint Technical Report. Computer Science Department, 2004, Keele University (TR/ SE-0401) and National ICT Australia Ltd. https://www.inf.ufsc.br/~aldo.vw/kitchenham.pdf
  32. Lister, R. (2011). Concrete and other neo-Piagetian forms of reasoning in the novice programmer. In Proceedings of the 13th Australasian Computing Education Conference - Volume 114 (ACE’11), John Hamer and Michael de Raadt (Eds.). Australian Computer Society, Darlinghurst, Australia, 9–18. https://doi.org/10.1145/1044550.1041673
  33. Lister, R., Adams, E. S., Fitzgerald, S., Fone, W., Hamer, J., Lindholm, M., McCartney, R., Moström, J. E., Sanders, K., Seppälä, O., Simon, B. & Thomas, L. (2004). A multi-national study of reading and tracing skills in novice programmers. In Working Group Reports from ITiCSE on Innovation and Technology in Computer Science Education (ITiCSE-WGR’04). ACM, New York, 119–150. https://dx.doi.org/10.1145/1044550.1041673
  34. Lister, R., Fidge, C. & Teague, D. (2009). Further evidence of a relationship between explaining, tracing and writing skills in introductory programming. In Proceedings of the 14th Annual ACM SIGCSE Conference on Innovation and Technology in Computer Science Education (ITiCSE’09). ACM, New York, 161–165. http://dx.doi.org/10.1145/1562877.1562930
  35. Lister, R., Simon, B., Thompson, E., Whalley, J. L. & Prasad, C., (2006). Not seeing the forest for the trees: Novice programmers and the SOLO taxonomy. In Proceedings of the 11th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education (ITICSE’06). ACM, New York, 118–122. https://dx.doi.org/10.1145/1140124.1140157
  36. Lowe, T. (2019, October). Debugging: The key to unlocking the mind of a novice programmer?. In 2019 IEEE Frontiers in Education Conference (FIE) (pp. 1-9). IEEE. https://doi.org/10.1109/FIE43999.2019.902869
  37. Luo, R., Li, N., Leach, M., Lim, E. G., & Saunders, S. (2025, May). A Systematic Review of Undergraduate Programming Difficulties: Highlighting AI Tools to Address Learning Challenges. In 2025 5th International Conference on Artificial Intelligence and Education (ICAIE) (pp. 30-34). IEEE. https://doi.org/10.1109/ICAIE64856.2025.11158145
  38. Medeiros, R. P., Ramalho, G. L., & Falcão, T. P. (2018). A systematic literature review on teaching and learning introductory programming in higher education. IEEE Transactions on Education, 62(2), 77-90. https://doi.org/0.1109/TE.2018.2864133
  39. Neuwinger, M., & Riehle, D. (2025, April). A Systematic Review of Common Beginner Programming Mistakes in Data Engineering. In 2025 IEEE/ACM 37th International Conference on Software Engineering Education and Training (CSEE&T) (pp. 170-181). IEEE. https//doi.org/10.1109/CSEET66350.2025.00024
  40. Quintero-Manes, R., & Vieira, C. (2025). Differentiated measurement of cognitive loads in computer programming. Journal of Computing in Higher Education, 37(3), 945-962. https://doi.org/10.1007/s12528-024-09411-7
  41. Rubio-Manzano, C., Meza, J., Fernandez-Santibanez, R., & Vidal-Castro, C. (2025). Teaching Programming in the Age of Generative AI: Insights from Literature, Pedagogical Proposals, and Student Perspectives. arXiv preprint. https://doi.org/10.48550/arXiv.2507.00108
  42. Pendergast, M. (2006). Teaching introductory programming to IS students: Java problems and pitfalls. Journal of Information Technology Education: Research, 5(1), 491-515. https://doi.org/10.28945/261
  43. Sorva, J. (2012). Notional machines and introductory programming education (Doctoral dissertation, Aalto University). Aalto University publication series. https://aaltodoc.aalto.fi/handle/123456789/12345
  44. Sweller, J. (2010). Element interactivity and intrinsic, extraneous, and germane cognitive load. Educational psychology review, 22(2), 123-138. https://doi.org/ 10.1007/s10648-010-9128-5
  45. Sweller, J., Van Merriënboer, J. J., & Paas, F. (2019). Cognitive architecture and instructional design: 20 years later. Educational psychology review, 31(2), 261-292.
  46. Wing, J. M. (2006). Computational thinking. Communications of the ACM, 49(3), 33-35.
  47. Wulf, T. (2005, October). Constructivist approaches for teaching computer programming. In Proceedings of the 6th conference on Information technology education (pp. 245-248). https://doi.org/10.1145/1095714.1095771
  48. Zviel-Girshin, R. (2024). The Good and Bad of AI Tools in Novice Programming Education. Education Sciences, 14(10), 1089. https://doi.org/10.3390/educsci14101089