Source code comprehension: decoding the cognitive challenges of novice programmers
Khomokhoana, Pakiso Joseph
MetadataShow full item record
After four decades of research investigations, source code comprehension (SCC) continues to be challenging to undergraduate Computer Science (CS) students. CS instructors, on the other hand, do not generally have any problems to comprehend source code. The Decoding the Disciplines (DtDs) philosophy is based on the premise that each discipline has its own unique set of mental operations. In many cases, these operations have become invisible to instructors, as they tend to perform them automatically based on years of experience. If the nature of these operations is not made explicit to students, it is likely that they will develop learning ‘bottlenecks’ which could prevent them from mastering key disciplinary practices (such as SCC). Better understanding of the nature of the cognitive processes and related strategies employed by experts during SCC could ultimately be utilised to expose these ‘hidden’ mental steps. The overall aim of this study was to explore how a systematic decoding approach can be used to uncover cognitive strategies for efficient SCC by novice programmers. The research findings are presented in the format of three interrelated articles: Article 1 reports on a study aimed at uncovering common SCC bottlenecks experienced by senior CS students. Thematic analysis of the collected data revealed eight common SCC difficulties specifically related to arrays, programming logic, and control structures. The identified difficulties, together with findings from existing literature, as well as personal experiences were then used to formulate six usable SCC bottlenecks. The identified bottlenecks point to student learning difficulties that should be addressed in introductory CS courses. This article intends to create awareness among CS instructors regarding the role that a systematic decoding approach can play in exposing the mental processes and bottlenecks unique to the CS discipline. Article 2 describes a study that employed decoding interviews, followed by thematic data analysis, to uncover a variety of explicit cognitive processes and related strategies utilised by a select group of experienced programming instructors during a SCC task. The insights gained were then used to propose a set of mental scaffolding techniques for efficient SCC. It is foreseen that programming instructors could use these techniques as an SCC teaching aid to convey expert ways of thinking more explicitly to their students. Insight into the general cognitive strategies utilised by expert programmers is also an important step towards further exploration of the more detailed step-by-step procedures followed by experts during SCC. One of the key bottlenecks identified in the CS discipline, relates to students’ inability to reliably work their way through the long chain of reasoning necessary to comprehend source code. In an attempt to narrow the existing gap between expert and novice thinking in this regard, Article 3 describes a study in which decoding interviews with five expert programmers (who were also experienced programming instructors) were utilised to systematically deconstruct the explicit mental techniques and reasoning strategies necessary for efficient SCC. Thematic analysis of the mental operations performed by these experts during an SCC activity, led to the identification of 11 key strategies. Knowledge of these strategies as well as the related explicit mental operations were then used to devise a step-by-step framework for efficient SCC. The main purpose of this framework is to create awareness among CS instructors regarding the explicit mental operations required for efficient SCC, and to serve as a source of further research and refinement. Moreover, within the realm of the DtDs philosophy, this framework can also serve as a starting point for devising explicit strategies to model these mental operations to students, and to help them master each of the identified strategies.