ABSTRACT
The area of program comprehension comprises a vast body of literature, with numerous conflicting models having been proposed. Models are typically grounded in experimental studies mostly involving experienced programmers. The question of how to relate this material to the teaching and learning of programming for novices has proven challenging for many researchers. In this critical review from a computer science educational perspective, the authors compare and contrast the way in which different models conceptualize program comprehension. This provides new insights into learning issues such as content, sequence, learning obstacles, effective learning tasks and teaching methods, as well as into the assessment of learning
- Abbas, N. Properties of "Good" Java Examples. Umea's 13th Student Conference in Computer Science 1--17.Google Scholar
- Al-Imamy, S., Alizadeh, J. et al. 2006. On the Development of a Programming Teaching Tool: The Effect of Teaching by Templates on the Learning Process. Journal of Information Technology Education. 5, (2006), 271--283.Google Scholar
- Arisholm, E., Gallis, H. et al. 2007. Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise. IEEE Transactions on Software Engineering. 33, 2 (2007), 65--86. Google ScholarDigital Library
- Astrachan, O., Mitchener, G. et al. 1998. Design patterns: an essential component of CS curricula. Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science education (Atlanta, Georgia, United States, 1998), 153--160. Google ScholarDigital Library
- Baldwin, L.P. and Macredie, R.D. 1999. Beginners and programming: insights from second language learning and teaching. Education and Information Technologies. 4, 2 (1999), 167--179. Google ScholarDigital Library
- Bennedsen, J. and Caspersen, M. 2008. Model-Driven Programming. Reflections on the Teaching of Programming. J. Bennedsen, M. Caspersen, et al., eds. Springer Berlin / Heidelberg. 116--129. Google ScholarDigital Library
- Biggs, J.B. and Collis, K.F. 1982. Evaluating the quality of learning : the SOLO taxonomy (Structure of the observed learning outcome) / John B. Biggs, Kevin F. Collis. (1982).Google Scholar
- Börstler, J., Hall, M.S. et al. 2009. An evaluation of object oriented example programs in introductory programming textbooks. SIGCSE Bull. 41, 4 (2009), 126--143. Google ScholarDigital Library
- Brooks, R. 1983. Towards a theory of the comprehension of computer programs. International Journal of Man-Machine Studies. 18, 6 (1983), 543--554.Google ScholarCross Ref
- Burkhardt, J., Détienne, F. et al. 2002. Object-oriented program comprehension: Effect of expertise, task and phase. Empirical Software Engineering. 7, 2 (2002), 115--156. Google ScholarDigital Library
- Chen, T., Monge, A. et al. 2006. Relationship of early programming language to novice generated design. SIGCSE Bull. 38, 1 (2006), 495--499. Google ScholarDigital Library
- Chmiel, R. and Loui, M.C. 2004. Debugging: From novice to expert. ACM SIGCSE Bulletin. 36, 1 (2004), 17--21. Google ScholarDigital Library
- Clear, T. 2005. Comprehending large code bases - the skills required for working in a "brown fields" environment. ACM SIGCSE Bulletin. 37, 2 (2005), 12--14. Google ScholarDigital Library
- Corritore, C. and Wiedenbeck, S. 1991. What do novices learn during program comprehension? International Journal of Human-Computer Interaction. 3, 2 (1991), 199--222.Google ScholarCross Ref
- Corritore, C.L. and Wiedenbeck, S. 2001. An exploratory study of program comprehension strategies of procedural and object-oriented programmers. International Journal of Human-Computer Studies. 54, 1 (2001), 1--23. Google ScholarDigital Library
- Cross, J.H., Hendrix, T.D. et al. 1999. Software visualization and measurement in software engineering education: An experience report. FRONTIERS IN EDUCATION CONFERENCE (1999), 12B1/5-12B110.Google Scholar
- Deek, F.P., Kimmel, H. et al. 1998. Pedagogical changes in the delivery of the first-course in computer science: Problem solving, then programming. Journal of Engineering Education. 87, 3 (1998), 313--320.Google ScholarCross Ref
- Denny, P., Luxton-Reilly, A. et al. 2008. Evaluating a new exam question: Parsons problems. Proceeding of the Fourth international Workshop on Computing Education Research (Sydney, Australia, 2008), 113--124. Google ScholarDigital Library
- Détienne, F. 1996. What model(s) for program understanding? Arxiv preprint cs/0702004 (1996).Google Scholar
- Douce, C. 2008. The Stores Model of Code Cognition. 20th Psychology of Programming Interest Group, Lancaster University, September 2008. (2008).Google Scholar
- Du Boulay, B. 1986. Some difficulties of learning to program. Journal of Educational Computing Research. (1986), 57--73.Google Scholar
- Engle, R.W., Tuholski, S.W. et al. 1999. Working memory, short-term memory, and general fluid intelligence: A latent-variable approach. Journal of Experimental Psychology: General. 128, 3 (1999), 309--331.Google ScholarCross Ref
- Exton, C. 2002. Constructivism and Program Comprehension Strategies. International Conference on Program Comprehension (Los Alamitos, CA, USA, 2002), 281. Google ScholarDigital Library
- Fincher, S., Petre, M. et al. 2004. A multi-national, multiinstitutional study of student-generated software. Kolin Kolistelut-Koli Calling Proceedings. (2004), 20--28.Google Scholar
- Fix, V., Wiedenbeck, S. et al. 1993. Mental representations of programs by novices and experts. Proceedings of the INTERACT '93 and CHI '93 conference on Human factors in computing systems (Amsterdam, The Netherlands, 1993), 74--79. Google ScholarDigital Library
- Fjuk, A., Holmboe, C. et al. 2006. Contextualizing object-oriented learning. Comprehensive object-oriented learning: the learner's perspective. A. Fjuk, A. Karahasanović, et al., eds. Santa Rosa: Informing Science Press. 11--26.Google Scholar
- Gerdt, P. and Sajaniemi, J. 2006. A web-based service for the automatic detection of roles of variables. SIGCSE Bull. 38, 3 (2006), 178--182. Google ScholarDigital Library
- Good, J. and Brna, P. 2004. Program comprehension and authentic measurement:a scheme for analysing descriptions of programs. International Journal of Human-Computer Studies. 61, 2 (2004), 169--185. Google ScholarDigital Library
- Goodyear, P. 1987. Sources of difficulty in assessing the cognitive effects of learning to program. Journal of Computer Assisted Learning. 3, 4 (1987), 214--223.Google ScholarCross Ref
- Hundhausen, C.D., Brown, J.L. et al. 2006. A methodology for analyzing the temporal evolution of novice programs based on semantic components. Proceedings of the second international workshop on Computing education research (Canterbury, United Kingdom, 2006), 59--71. Google ScholarDigital Library
- Jones, S.J. and Burnett, G.E. 2007. Spatial skills and navigation of source code. Proceedings of the 12th annual SIGCSE conference on Innovation and technology in computer science education (Dundee, Scotland, 2007), 231--235. Google ScholarDigital Library
- Karahasanović, A., Levine, A.K. et al. 2007. Comprehension strategies and difficulties in maintaining objectoriented systems: An explorative study. J. Syst. Softw. 80, 9 (2007), 1541--1559. Google ScholarDigital Library
- Kintsch, W. 1998. Comprehension : a paradigm for cognition. Cambridge University Press.Google Scholar
- Kintsch, W. and van Dijk, T.A. 1978. Toward a model of text comprehension and production. Psychological Review. 85, 5 (1978), 363--394.Google ScholarCross Ref
- Ko, A. and Myers, B. 2005. A framework and methodology for studying the causes of software errors in programming systems. Journal of Visual Languages & Computing. 16, 1-2 (2005), 41--84. Google ScholarDigital Library
- Kotze, P., Renaud, K. et al. 2008. Don't do this - Pitfalls in using anti-patterns in teaching human-computer interaction principles. Computers & Education. 50, 3 (2008), 979--1008. Google ScholarDigital Library
- Kroes, P. 1998. Technological Explanations: The Relation between Structure and Function of Technological Objects. Techné: Journal of the Society for Philosophy and Technology. 3, 3 (1998), 18--34.Google Scholar
- Kuittinen, M. and Sajaniemi, J. 2004. Teaching roles of variables in elementary programming courses. Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education (Leeds, United Kingdom, 2004), 57--61. Google ScholarDigital Library
- Kuittinen, M. and Sajaniemi, J. 2004. Teaching roles of variables in elementary programming courses. Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education - ITiCSE '04 (Leeds, United Kingdom, 2004), 57. Google ScholarDigital Library
- LaToza, T.D., Garlan, D. et al. 2007. Program comprehension as fact finding. Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on the foundations of software engineering (2007), 361--370. Google ScholarDigital Library
- de Lemos, M.A. and de Barros, L.N. 2003. A didactic interface in a programming tutor. Proceedings of 11th International Conference on Artificial Intelligence in Education (AIED2003) (2003).Google Scholar
- Letovsky, S. 1986. Cognitive processes in program comprehension. Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers (Washington, D.C., United States, 1986), 58--79. Google ScholarDigital Library
- Letovsky, S. 1987. Cognitive processes in program comprehension. Journal of Systems and Software. 7, 4 (Dec. 1987), 325--339. Google ScholarDigital Library
- Lister, R., Clear, T. et al. 2009. Naturally occurring data as research instrument: analyzing examination responses to study the novice programmer. SIGCSE Bull. 41, 4 (2009), 156--173. Google ScholarDigital Library
- Lister, R., Schulte, C. et al. 2006. Research perspectives on the objects-early debate. ACM SIGCSE Bulletin. 38, 4 (2006), 146--165. Google ScholarDigital Library
- Lister, R., Seppälä, O. et al. 2004. A multi-national study of reading and tracing skills in novice programmers. ACM SIGCSE Bulletin. 36, 4 (2004), 119--150. Google ScholarDigital Library
- Lister, R., Simon, B. et al. 2006. Not seeing the forest for the trees. ACM SIGCSE Bulletin. 38, 3 (2006), 118--122. Google ScholarDigital Library
- Littman, D.C., Pinto, J. et al. 1986. Mental models and software maintenance. Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers (Washington, D.C., United States, 1986), 80--98. Google ScholarDigital Library
- Lopez, M., Whalley, J. et al. 2008. Relationships between reading, tracing and writing skills in introductory programming. Proceeding of the fourth international workshop on Computing education research - ICER '08 (Sydney, Australia, 2008), 101--112. Google ScholarDigital Library
- Mannila, L. 2006. Progress reports and novices' understanding of program code. Proceedings of the 6th Baltic Sea conference on Computing education research: Koli Calling 2006 (Uppsala, Sweden, 2006), 27--31. Google ScholarDigital Library
- Mannila, L. 2007. Novices' progress in introductory programming courses. Informatics in education. 6, 1 (2007), 139--152. Google ScholarDigital Library
- von Mayrhauser, A. and Lang, S. 1999. A coding scheme to support systematic analysis of software comprehension. IEEE Transactions on Software Engineering. 25, 4 (Aug. 1999), 526--540. Google ScholarDigital Library
- von Mayrhauser, A. and Vans, A.M. 1994. Program Understanding - A Survey. Colorado State University Computer Science Technical Report CS94-120. (1994).Google Scholar
- von Mayrhauser, A. and Vans, A.M. 1995. Program comprehension during software maintenance and evolution. Computer. 28, 8 (Aug. 1995), 44--55. Google ScholarDigital Library
- von Mayrhauser, A. and Vans, A.M. 1996. Identification of dynamic comprehension processes during large scale maintenance. IEEE Transactions on Software Engineering. 22, 6 (1996), 424--437. Google ScholarDigital Library
- McCauley, R., Fitzgerald, S. et al. 2008. Debugging: a review of the literature from an educational perspective. Computer Science Education. 18, 2 (2008), 67--92.Google ScholarCross Ref
- McCracken, W.M. 2002. Models of designing: understanding software engineering education from the bottom up. 15th Conference on Software Engineering Education and Training (CSEET'02) (2002), 0055. Google ScholarDigital Library
- Mead, J., Gray, S. et al. 2006. A cognitive approach to identifying measurable milestones for programming skill acquisition. SIGCSE Bull. 38, 4 (2006), 182--194. Google ScholarDigital Library
- Mosemann, R. and Wiedenbeck, S. 2001. Navigation and comprehension of programs by novice programmers. 9th International Workshop on Program Comprehension (IWPC'01) (2001), 79--88. Google ScholarDigital Library
- Naps, T., Cooper, S. et al. 2003. Evaluating the educational impact of visualization. Working group reports from ITiCSE on Innovation and technology in computer science education (Thessaloniki, Greece, 2003), 124--136. Google ScholarDigital Library
- Nevalainen, S. and Sajaniemi, J. 2006. An experiment on short-term effects of animated versus static visualization of operations on program perception. Proceedings of the second international workshop on Computing education research (Canterbury, United Kingdom, 2006), 7--16. Google ScholarDigital Library
- O'Brien, Michael 2001. Software Comprehension - A review and research direction. Technical Report 2003 (2001), 176--185.Google Scholar
- O'Brien, M.P., Buckley, J. et al. 2004. Expectation-based, inference-based, and bottom-up software comprehension. Journal of Software Maintenance and Evolution: Research and Practice. 16, 6 (2004), 427--447. Google ScholarDigital Library
- Parsons, D. and Haden, P. 2006. Parson's programming puzzles: a fun and effective learning tool for first programming courses. ACE '06: Proceedings of the 8th Australian conference on Computing education (Darlinghurst, Australia, 2006), 157--163. Google ScholarDigital Library
- Pennington, N. 1987. Comprehension strategies in programming. Empirical studies of programmers: second workshop. E. Soloway, G. Olson, et al., eds. Ablex Publishing Corp. 100--113. Google ScholarDigital Library
- Pennington, N. 1987. Stimulus structures and mental representations in expert comprehension of computer programs. Cognitive Psychology. 19, 3 (1987), 295--341.Google ScholarCross Ref
- Perkins, D.N. 1986. Conditions of Learning in Novice Programmers. Journal of Educational Computing Research. 2, 1 (1986), 37--55.Google ScholarCross Ref
- Perkins, D.N. and Fay, M. 1986. Fragile knowledge and neglected strategies in novice programmers. Empirical Studies of Programmers. E. Soloway and S. Ivengar, eds. Ablex Publishing Corp. 213--229. Google ScholarDigital Library
- de Raadt, M., Watson, R. et al. 2006. Chick sexing and novice programmers: explicit instruction of problem solving strategies. Proceedings of the 8th Austalian conference on Computing education-Volume 52 (2006), 55--62. Google ScholarDigital Library
- Rajlich, V. 2002. Program Comprehension as a Learning Process. Proceedings of the 1st IEEE International Conference on Cognitive Informatics (2002), 343--350. Google ScholarDigital Library
- Ramalingam, V., LaBelle, D. et al. 2004. Self-efficacy and mental models in learning to program. Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education (Leeds, United Kingdom, 2004), 171--175. Google ScholarDigital Library
- Rist, R.S. 2004. Learning to Program: Schema Creation, Application, and Evaluation. Computer Science Education Research. S. Fincher and M. Petre, eds. Routledge. 175--198.Google Scholar
- Robertson, T.J., Prabhakararao, S. et al. 2004. Impact of interruption style on end-user debugging. Proceedings of the 2004 conference on Human factors in computing systems - CHI '04 (Vienna, Austria, 2004), 287--294. Google ScholarDigital Library
- Robins, A., Haden, P. et al. 2006. Problem Distributions in a CS1 Course. Eighth Australasian Computing Education Conference (ACE2006) (Hobart, Australia, 2006), 165--173. Google ScholarDigital Library
- Robins, A., Rountree, J. et al. 2003. Learning and teaching programming: A review and discussion. Computer Science Education. 13, 2 (2003), 137--172.Google ScholarCross Ref
- Sajaniemi, J. and Kuittinen, M. From procedures to objects: What have we (not) done. Proceedings of the 19th Annual Workshop of the Psychology of Programming Interest Group 86--100.Google Scholar
- Sajaniemi, J. and Kuittinen, M. 1999. Three-level teaching material for computer-aided lecturing. Comput. Educ. 32, 4 (1999), 269--284. Google ScholarDigital Library
- Sajaniemi, J., Kuittinen, M. et al. 2007. A study of the development of students' visualizations of program state during an elementary object-oriented programming course. Proceedings of the third international workshop on Computing education research (Atlanta, Georgia, USA, 2007), 1--16. Google ScholarDigital Library
- Sajaniemi, J., Kuittinen, M. et al. 2008. A study of the development of students' visualizations of program state during an elementary object-oriented programming course. J. Educ. Resour. Comput. 7, 4 (2008), 1--31.1 Google ScholarDigital Library
- Schulte, C. 2008. Block Model: an educational model of program comprehension as a tool for a scholarly approach to teaching. Proceeding of the Fourth international Workshop on Computing Education Research (Sydney, Australia, 2008), 149--160. Google ScholarDigital Library
- Sfard, A. 1991. On the dual nature of mathematical conceptions: Reflections on processes and objects as different sides of the same coin. Educational Studies in Mathematics. 22, 1 (1991), 1--36.Google ScholarCross Ref
- Shaft, T.M. and Vessey, I. 2006. The role of cognitive fit in the relationship between software comprehension and modification. MIS Quarterly. 30, 1 (2006), 29--55. Google ScholarDigital Library
- Shneiderman, B. and Mayer, R. 1979. Syntactic/semantic interactions in programmer behavior: A model and experimental results. International Journal of Computer & Information Sciences. 8, 3 (1979), 219--238.Google Scholar
- Simon, B., Fitzgerald, S. et al. 2007. Debugging assistance for novices: a video repository. SIGCSE Bull. 39, 4 (2007), 137--151. Google ScholarDigital Library
- Sims-Knight, J.E. and Upchurch, R.L. 1993. Teaching Object-Oriented Design Without Programming: A Progress Report. Computer Science Education. 4, 1 (1993), 135--156.Google ScholarCross Ref
- Soloway, E., Adelson, B. et al. 1988. Knowledge and Processes in the Comprehension of Computer Programs. The Nature of Expertise. M. Chi, R. Glaser, et al., eds. Lawrence Erlbaum Associates. 129--152.Google Scholar
- Soloway, E. and Ehrlich, K. 1984. Empirical studies of programming knowledge. IEEE Transactions on Software Engineering. 10, 5 (1984), 595--609.Google ScholarDigital Library
- Soloway, E. and Spohrer, J.C. 1989. Studying the Novice Programmer. L. Erlbaum Associates Inc. Google ScholarDigital Library
- Sorva, J., Karavirta, V. et al. 2007. Roles of variables in teaching. Journal of Information Technology Education. 6, (2007), 407--423.Google Scholar
- Spohrer, J.C., Soloway, E. et al. 1985. A goal/plan analysis of buggy pascal programs. Hum.-Comput. Interact. 1, 2 (1985), 163--207. Google ScholarDigital Library
- Storey, M. 2006. Theories, tools and research methods in program comprehension: past, present and future. Software Quality Journal. 14, 3 (2006), 187--208. Google ScholarDigital Library
- Tenenberg, J., Fincher, S. et al. 2005. Students designing software: a multi-national, multi-institutional study. Informatics in Education. 4, 1 (2005), 143--162.Google ScholarCross Ref
- Thompson, E.L. 2008. How do they understand? Practitioner perceptions of an object-oriented program. Massey University, New Zealand.Google Scholar
- Thompson, E. 2006. Using a subject area model as a learning improvement model. Proceedings of the 8th Australian Conference on Computing education - Volume 52 (Hobart, Australia, 2006), 197--203. Google ScholarDigital Library
- Uwano, H., Nakamura, M. et al. 2007. Exploiting Eye Movements for Evaluating Reviewer's Performance in Software Review. IEICE Trans. Fundam. Electron. Commun. Comput. Sci. 90, 10 (2007), 2290--2230. Google ScholarDigital Library
- Vagianou, E. 2006. Program working storage: a beginner's model. Proceedings of the 6th Baltic Sea conference on Computing education research: Koli Calling 2006 (Uppsala, Sweden, 2006), 69--76. Google ScholarDigital Library
- Whalley, J.L., Lister, R. et al. 2006. An Australasian study of reading and comprehension skills in novice programmers, using the bloom and SOLO taxonomies. ACE '06: Proceedings of the 8th Austalian conference on Computing education (Darlinghurst, Australia, Australia, 2006), 243--252. Google ScholarDigital Library
- Whalley, J.L. and Robbins, P. 2007. Report on the fourth BRACElet workshop. Bulletin of Applied Computing and Information Technology. 5, 1 (Jun. 2007).Google Scholar
- Wiedenbeck, S. 1986. Beacons in computer program comprehension. International Journal of Man-Machine Studies. 25, 6 (1986), 697--709. Google ScholarDigital Library
- Wiedenbeck, S. 2005. Factors affecting the success of non-majors in learning to program. Proceedings of the first international workshop on Computing education research (Seattle, WA, USA, 2005), 13--24. Google ScholarDigital Library
- Winslow, L.E. 1996. Programming pedagogy - a psychological overview. SIGCSE Bull. 28, 3 (1996), 17--22. Google ScholarDigital Library
- Wirth, N. 1971. Program development by stepwise refinement.Commun. ACM. 14, 4 (1971), 221--227. Google ScholarDigital Library
Index Terms
- An introduction to program comprehension for computer science educators
Recommendations
Block Model: an educational model of program comprehension as a tool for a scholarly approach to teaching
ICER '08: Proceedings of the Fourth international Workshop on Computing Education ResearchIn this paper, the Block Model, an educational model of program comprehension, is introduced. Its use for planning and analyzing lessons on algorithms is evaluated in a qualitative study with prospective computer science teachers. In addition, the ...
Introduction to special issue on alternatives to lecture in the computer science classroom
Special Issue on Alternatives to Lecture in the Computer Science ClassroomActive learning in the college classroom has long been promoted as more effective than traditional lecture. Increased adoption of these instructional practices is recommended in several prominent national reports as well as a new National Science ...
Computer science at school/CS teacher education: Koli working-group report on CS at school
Koli Calling '12: Proceedings of the 12th Koli Calling International Conference on Computing Education ResearchIn an international study, experts reflected on their national state of computer science education in school, and the associated situation and education of computer science teachers. While these situations are shaped by local circumstances, they are ...
Comments