Decoding Source Code Comprehension: Bottlenecks Experienced by Senior Computer Science Students

  • Pakiso J. Khomokhoana
  • Liezel NelEmail author
Conference paper
Part of the Communications in Computer and Information Science book series (CCIS, volume 1136)


Source code comprehension (SCC) continues to be a challenge to undergraduate CS students. Understanding the mental processes that students follow while comprehending source code can be crucial in helping students to overcome related challenges. The ‘Decoding the Disciplines’ (DtDs) paradigm that is gaining popularity world-wide provides a process to help students to master the mental actions they need to be successful in a specific discipline. In focusing on the first DtDs step of identifying mental obstacles (“bottlenecks”), this paper describes a study aimed at uncovering the major SCC bottlenecks that senior CS students experienced. We followed an integrated methodological approach where data were collected by asking questions, observations, and artefact analysis. Thematic analysis of the collected data revealed a series of SCC difficulties specifically related to arrays, programming logic, and control structures. The identified difficulties, including findings from the literature as well as our own teaching experiences, were used to compile a usable list of SCC bottlenecks. By focusing on senior students (instead of first-year students), the identified SCC bottlenecks point to learning difficulties that need to be addressed in introductory CS courses.


Computer programming Source code comprehension Students’ learning bottlenecks Decoding the Disciplines 


  1. 1.
    Alston, P., Walsh, D., Westhead, G.: Uncovering ‘threshold concepts’ in web development: an instructor perspective. ACM Trans. Comput. Educ. 15(1), 1–18 (2015)CrossRefGoogle Scholar
  2. 2.
    Anyango, J.T., Suleman, H.: Teaching programming in Kenya and South Africa: what is difficult and is it universal? In: Proceedings of the 18th Koli Calling International Conference on Computing Education Research. ACM (2018)Google Scholar
  3. 3.
    Bosse, Y., Gerosa, M.A.: Difficulties of programming learning from the point of view of students and instructors. EEE Lat. Am. Trans. 15(11), 2191–2199 (2017)CrossRefGoogle Scholar
  4. 4.
    du Boulay, B.: Some difficulties of learning to program. J. Educ. Comput. Res. 2(1), 57–73 (1986)CrossRefGoogle Scholar
  5. 5.
    Boustedt, J., et al.: Threshold concepts in computer science: do they exist and are they useful? In: Proceedings of the 38th SIGCSE Technical Symposium on Computer Science Education, pp. 504–508. ACM (2007)Google Scholar
  6. 6.
    Butler, M., Morgan, M.: Learning challenges faced by novice programming students studying high level and low feedback concepts. In: Proceedings Ascilite Singapore, pp. 99–107 (2007)Google Scholar
  7. 7.
    Charters, E.: The use of think-aloud methods in qualitative research: an introduction to think-aloud methods. Brock Educ. 12(2), 68–82 (2003)Google Scholar
  8. 8.
    Creswell, J.W., Creswell, J.D.: Research Design: Qualitative, Quantitative, and Mixed Methods Approaches. SAGE, Thousand Oaks (2017)Google Scholar
  9. 9.
    Cunningham, K., Blanchard, S., Ericson, B., Guzdial, M.: Using tracing and sketching to solve programming problems: replicating and extending an analysis of what students draw. In: Proceedings of the International Conference on Computing Education Research, pp. 164–172. ACM (2017)Google Scholar
  10. 10.
    Deitel, P.J., Deitel, H., Deitel, A.: Visual Basic 2012 — How to Program. Pearson Education, London (2013)zbMATHGoogle Scholar
  11. 11.
    Diaz, A., Middendorf, J., Pace, D., Shopkow, L.: The history learning project: a department ‘decodes’ its students. J. Am. Hist. 94(4), 1211–1224 (2008)CrossRefGoogle Scholar
  12. 12.
    Fitzgerald, S., Simon, B., Thomas, L.: Strategies that students use to trace code: an analysis based in grounded theory. In: Proceedings of the 1st International Workshop on Computing Education Research, pp. 69–80. ACM (2004)Google Scholar
  13. 13.
    Garner, S., Haden, P., Robins, A.: My program is correct but it doesn’t run: a preliminary investigation of novice programmers’ problems. In: Australasian Computing Education Conference, pp. 173–180. Australian Computer Society Inc., Newcastle (2005)Google Scholar
  14. 14.
    German, A., Menzel, S., Middendorf, J., Duncan, F.J.: How to decode student bottlenecks to learning in computer science. In: Proceedings of the 45th Technical Symposium on Computer Science Education, p. 733. ACM (2014)Google Scholar
  15. 15.
    Goldman, K., et al.: Identifying important and difficult concepts in introductory computing courses using a delphi process. In: Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education, pp. 256–260. ACM (2008)Google Scholar
  16. 16.
    Grover, S., Basu, S.: Measuring student learning in introductory block-based programming: examining misconceptions of loops, variables, and boolean logic. In: Proceedings of the SIGCSE Technical Symposium on Computer Science Education, pp. 267–272. ACM (2017)Google Scholar
  17. 17.
    Gurevich, Y.: Logic and the challenge of computer science. In: Börger, E. (ed.) Current Trends in Theoretical Computer Science, pp. 1–57. Computer Science Press (1988)Google Scholar
  18. 18.
    Hyland, E., Clynch, G.: Initial experiences gained and initiatives employed in the teaching of Java programming in the Institute of Technology Tallaght. In: Joint Proceedings of the Inaugural Conference on the Principles and Practice of Programming, and 2nd Workshop on Intermediate Representation engineering for Virtual Machines, pp. 101–106. ACM (2002)Google Scholar
  19. 19.
    IUBCITL: Team-Based Learning For Practice and Motivation (2016).
  20. 20.
    Kallia, M., Sentance, S.: Computing teachers’ perspectives on threshold concepts: functions and procedural abstraction. In: Proceedings of the WIPSCE 12th Workshop on Primary and Secondary Computing Education, pp. 15–24 (2017)Google Scholar
  21. 21.
    Keen, A., Mammen, K.: Program decomposition and complexity in CS1. In: Proceedings of the 46th Technical Symposium on Computer Science Education, pp. 48–53. ACM (2015)Google Scholar
  22. 22.
    Klenke, K.: Qualitative Research in the Study of Leadership, 2nd edn. Emerald Publishing, Bingley (2016)CrossRefGoogle Scholar
  23. 23.
    Lister, R., et al.: A multi-national study of reading and tracing skills in novice programmers. ACM SIGCSE Bull. 36(4), 119–150 (2004)CrossRefGoogle Scholar
  24. 24.
    Malik, S.I., Coldwell-Neilson, J.: A model for teaching an introductory programming course using ADRI. Educ. Inf. Technol. 22(3), 1089–1120 (2017)CrossRefGoogle Scholar
  25. 25.
    Marshall, C., Rossman, G.B.: Designing Qualitative Research, 6th edn. SAGE, Thousand Oaks (2016)Google Scholar
  26. 26.
    McCracken, M., et al.: A multi-national, multi-institutional study of assessment of programming skills of first-year CS students. In: Working Group Reports from ITiCSE on Innovation and Technology in Computer Science Education, pp. 125–180. ACM (2001)Google Scholar
  27. 27.
    Menzel, S.: ISSOTL 2015: Recursion as a Bottleneck Concept (2017).
  28. 28.
    Middendorf, J., Pace, D.: Decoding the disciplines: a model for helping students learn disciplinary ways of thinking. New Dir. Teach. Learn. 98, 1–12 (2004)CrossRefGoogle Scholar
  29. 29.
    Middendorf, J., Shopkow, L.: Overcoming Student Learning Bottlenecks: Decode Your Disciplinary Critical Thinking. Stylus Publishing/LLC (2018)Google Scholar
  30. 30.
    Milne, I., Rowe, G.: Difficulties in learning and teaching programming: views of students and tutors. Educ. Inf. Technol. 7(1), 55–66 (2002)CrossRefGoogle Scholar
  31. 31.
    Mutanu, L., Machoka, P.: Enhancing computer students’ academic performance through explanatory modeling. In: Tait, B., et al. (eds.) SACLA 2019. CCIS, vol. 1136, pp. 227–243 (2020)Google Scholar
  32. 32.
    Pace, D.: The Decoding the Disciplines Paradigm: Seven Steps to Increased Student Learning. Indiana University Press (2017)Google Scholar
  33. 33.
    Patton, M.Q.: Qualitative Research & Evaluation Methods: Integrating Theory and Practice, 4th edn. SAGE, Thousand Oaks (2015)Google Scholar
  34. 34.
    Pinnow, E.: Decoding the disciplines: an approach to scientific thinking. Psychol. Learn. Teach. 15(1), 94–101 (2016)CrossRefGoogle Scholar
  35. 35.
    Plowright, D.: Using Mixed Methods: Frameworks for an Integrated Methodology. SAGE, Thousand Oaks (2011)CrossRefGoogle Scholar
  36. 36.
    Qian, Y., Lehman, J.: Students’ misconceptions and other difficulties in introductory programming: a literature review. ACM Trans. Comput. Educ. 18(1), 1–24 (2017)CrossRefGoogle Scholar
  37. 37.
    Rouse, M., Phillips, J., Mehaffey, R., Mcgowan, S., Felten, P.: Decoding and disclosure in students-as-partners research: a case study of the political science literature review. Int. J. Stud. Partn. 1(1), 1–14 (2017)Google Scholar
  38. 38.
    Sanders, K., McCartney, R.: Threshold concepts in computing: past, present, and future. In: Proceedings of the 16th International Conference on Computing Education Research, pp. 91–100. ACM (2016)Google Scholar
  39. 39.
    Shaft, T.M., Vessey, I.: The relevance of application domain knowledge: the case of computer program comprehension. Inf. Syst. Res. 6(3), 286–299 (1995)CrossRefGoogle Scholar
  40. 40.
    Shopkow, L.: How many sources do i need? Hist. Teach. 50(2), 169–200 (2017)Google Scholar
  41. 41.
    Shopkow, L., Diaz, A., Middendorf, J., Pace, D.: From bottlenecks to epistemology in history: changing the conversation about the teaching of history in colleges and universities. In: Changing the Conversation about Higher Education. Rowman & Littlefield Publishing (2013)Google Scholar
  42. 42.
    Timmermans, J., Barnett, J.: The Role of Identifying and Decoding Bottlenecks in the Redesign of Tax Curriculum. In: Society for Teaching and Learning in Higher Education Conference, Canada (2013)Google Scholar
  43. 43.
    Verpoorten, D., et al.: Decoding the disciplines — a pilot study at the University of Liege (Belgium). In: Proceedings of 2nd EuroSoTL Conference, pp. 263–267 (2017)Google Scholar
  44. 44.
    Weinberg, G.M.: The Psychology of Computer Programming. Van Nostrand Reinhold/Litton Educational Publishing (1971)Google Scholar
  45. 45.
    Whalley, J.L., et al.: An Australasian study of reading and comprehension skills in novice programmers, using the bloom and SOLO taxonomies. In: Proceedings of the 8th Australasian Conference on Computer Science Education, pp. 243–252 (2006)Google Scholar
  46. 46.
    Wilkinson, A.: Decoding learning in law: collaborative action towards the reshaping of university teaching and learning. Educ. Media Int. 51(2), 124–134 (2014)MathSciNetCrossRefGoogle Scholar
  47. 47.
    Willes, K.L.: Data cleaning. In: The SAGE Encyclopedia of Communication Research Methods. SAGE (2017)Google Scholar

Copyright information

© Springer Nature Switzerland AG 2020

Authors and Affiliations

  1. 1.Department of Computer Science and InformaticsUniversity of the Free StateBloemfonteinSouth Africa

Personalised recommendations