An introduction to program comprehension for computer science educators

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

[1]  Michael McCracken,et al.  Models of designing: understanding software engineering education from the bottom up , 2002, Proceedings 15th Conference on Software Engineering Education and Training (CSEE&T 2002).

[2]  Tony Clear,et al.  An Australasian study of reading and comprehension skills in novice programmers, using the bloom and SOLO taxonomies , 2006 .

[3]  Marja Kuittinen,et al.  From Procedures to Objects: What Have We (Not) Done? , 2007, PPIG.

[4]  Renee Hobbs,et al.  Conditions of Learning in Novice Programmers , 1986 .

[5]  Michael P. O'Brien,et al.  Software Comprehension - A Review & Research Direction , 2003 .

[6]  Marja Kuittinen,et al.  A study of the development of students' visualizations of program state during an elementary object-oriented programming course , 2008, JERC.

[7]  Peter Kroes,et al.  Technological Explanations: The Relation between Structure and Function of Technological Objects , 1998 .

[8]  Linda Mannila Novices' Progress in Introductory Programming Courses , 2007, Informatics Educ..

[9]  Brad A. Myers,et al.  A framework and methodology for studying the causes of software errors in programming systems , 2005, J. Vis. Lang. Comput..

[10]  Robert McCartney,et al.  Naturally occurring data as research instrument: analyzing examination responses to study the novice programmer , 2010, SGCS.

[11]  Christopher Exton Constructivism and program comprehension strategies , 2002, Proceedings 10th International Workshop on Program Comprehension.

[12]  Françoise Détienne,et al.  Object-Oriented Program Comprehension: Effect of Expertise, Task and Phase , 2002, Empirical Software Engineering.

[13]  Robert D. Macredie,et al.  Beginners and programming: insights from second language learning and teaching , 2004, Education and Information Technologies.

[14]  Susan Wiedenbeck,et al.  An exploratory study of program comprehension strategies of procedural and object-oriented programmers , 2001, Int. J. Hum. Comput. Stud..

[15]  Chris R. Douce The Stores Model of Code Cognition , 2008, PPIG.

[16]  Amir Abedi,et al.  Not Seeing the Forest for the Trees, or How to Spot the Anti-Political-Establishment Party , 1998 .

[17]  Jorma Sajaniemi,et al.  A web-based service for the automatic detection of roles of variables , 2006, ITICSE '06.

[18]  Anneliese Amschler Andrews,et al.  Program Comprehension During Software Maintenance and Evolution , 1995, Computer.

[19]  Susan Wiedenbeck,et al.  Beacons in Computer Program Comprehension , 1986, Int. J. Man Mach. Stud..

[20]  James D. Herbsleb,et al.  Program comprehension as fact finding , 2007, ESEC-FSE '07.

[21]  V. Rajich Program comprehension as a learning process , 2002, Proceedings First IEEE International Conference on Cognitive Informatics.

[22]  Elliot Soloway,et al.  Studying the Novice Programmer , 1988 .

[23]  Elliot Soloway,et al.  Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers , 1986 .

[24]  Raymond Lister,et al.  Relationships between reading, tracing and writing skills in introductory programming , 2008, ICER '08.

[25]  Anneliese Amschler Andrews,et al.  Identification of Dynamic Comprehension Processes During Large Scale Maintenance , 1996, IEEE Trans. Software Eng..

[26]  Tzu-Yi Chen,et al.  Relationship of early programming language to novice generated design , 2006, SIGCSE '06.

[27]  Marie Nordström,et al.  An evaluation of object oriented example programs in introductory programming textbooks , 2010, SGCS.

[28]  Christopher D. Hundhausen,et al.  A methodology for analyzing the temporal evolution of novice programs based on semantic components , 2006, ICER '06.

[29]  David Perkins,et al.  Fragile knowledge and neglected strategies in novice programmers , 1985 .

[30]  Carsten Schulte,et al.  Block Model: an educational model of program comprehension as a tool for a scholarly approach to teaching , 2008, ICER '08.

[31]  Evgenia Vagianou,et al.  Program working storage: a beginner's model , 2006, Baltic Sea '06.

[32]  Jim Buckley,et al.  Expectation-based, inference-based, and bottom-up software comprehension , 2004, J. Softw. Maintenance Res. Pract..

[33]  Jim Buckley,et al.  Expectation-based, inference-based, and bottom-up software comprehension: Research Articles , 2004 .

[34]  L. Thomas,et al.  A cognitive approach to identifying measurable milestones for programming skill acquisition , 2006, ITiCSE-WGR '06.

[35]  Mohamed A. Nour,et al.  On the Development of a Programming Teaching Tool: The Effect of Teaching by Templates on the Learning Process , 2006, J. Inf. Technol. Educ..

[36]  Michael C. Loui,et al.  Debugging: from novice to expert , 2004, SIGCSE '04.

[37]  Sally Fincher,et al.  Students Designing Software: a Multi-National, Multi-Institutional Study , 2005, Informatics Educ..

[38]  F. Deek,et al.  Pedagogical Changes in the Delivery of the First‐Course in Computer Science: Problem Solving, Then Programming , 1998 .

[39]  Margaret-Anne D. Storey,et al.  Theories, tools and research methods in program comprehension: past, present and future , 2006, Software Quality Journal.

[40]  MalmiLauri,et al.  Evaluating the educational impact of visualization , 2003 .

[41]  Iris Vessey,et al.  The Role of Cognitive Fit in the Relationship Between Software Comprehension and Modification , 2006, MIS Q..

[42]  Seppo Nevalainen,et al.  An experiment on short-term effects of animated versus static visualization of operations on program perception , 2006, ICER '06.

[43]  Gary E. Burnett,et al.  Spatial skills and navigation of source code , 2007, ITiCSE.

[44]  Václav Rajlich Program Comprehension as a Learning Process , 2002, IEEE ICCI.

[45]  Raymond Lister,et al.  Not seeing the forest for the trees: novice programmers and the SOLO taxonomy , 2006, ITICSE '06.

[46]  Kate Ehrlich,et al.  Empirical Studies of Programming Knowledge , 1984, IEEE Transactions on Software Engineering.

[47]  Linda Mannila,et al.  Progress reports and novices' understanding of program code , 2006, Baltic Sea '06.

[48]  A. Sfard On the dual nature of mathematical conceptions: Reflections on processes and objects as different sides of the same coin , 1991 .

[49]  Sue Fitzgerald,et al.  Debugging: a review of the literature from an educational perspective , 2008, Comput. Sci. Educ..

[50]  Anthony Robins,et al.  Problem distributions in a CS1 course , 2006 .

[51]  Errol Lindsay Thompson,et al.  How do they understand? Practitioner perceptions of an object-oriented program : a thesis presented in partial fulfilment of the requirements for the degree of Doctor of Philosophy in Education (Computer Science) at Massey University, Palmerston North, New Zealand , 2008 .

[52]  Akito Monden,et al.  Exploiting Eye Movements for Evaluating Reviewer's Performance in Software Review , 2007, IEICE Trans. Fundam. Electron. Commun. Comput. Sci..

[53]  Richard L. Upchurch,et al.  Teaching Object-Oriented Design Without Programming: A Progress Report , 1993, Comput. Sci. Educ..

[54]  Tony Clear Comprehending large code bases - the skills required for working in a "brown fields" environment , 2005, SGCS.

[55]  Susan Wiedenbeck,et al.  Navigation and comprehension of programs by novice programmers , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[56]  Leon E. Winslow,et al.  Programming pedagogy—a psychological overview , 1996, SGCS.

[57]  Susan Wiedenbeck,et al.  Factors affecting the success of non-majors in learning to program , 2005, ICER '05.

[58]  Walter Kintsch,et al.  Comprehension: A Paradigm for Cognition , 1998 .

[59]  Susan Wiedenbeck,et al.  What do novices learn during program comprehension? , 1991, Int. J. Hum. Comput. Interact..

[60]  Mark Toleman,et al.  Chick sexing and novice programmers: explicit instruction of problem solving strategies , 2006 .

[61]  Janet Rountree,et al.  Learning and Teaching Programming: A Review and Discussion , 2003, Comput. Sci. Educ..

[62]  J.H. Cross,et al.  Software visualization and measurement in software engineering education: an experience report , 1999, FIE'99 Frontiers in Education. 29th Annual Frontiers in Education Conference. Designing the Future of Science and Engineering Education. Conference Proceedings (IEEE Cat. No.99CH37011.

[63]  Marja Kuittinen,et al.  Three-level teaching material for computer-aided lecturing , 1999, Comput. Educ..

[64]  Elliot Soloway,et al.  Empirical Studies of Programmers: Second Workshop , 1991 .

[65]  Marilza Antunes de LEMOS,et al.  A Didactic Interface in a Programming Tutor , 2003 .

[66]  Susan Wiedenbeck,et al.  Self-efficacy and mental models in learning to program , 2004, ITiCSE '04.

[67]  Peter Goodyear,et al.  Sources of difficulty in assessing the cognitive effects of learning to program , 1987 .

[68]  Ruven E. Brooks,et al.  Towards a Theory of the Comprehension of Computer Programs , 1983, Int. J. Man Mach. Stud..

[69]  Lauri Malmi,et al.  Evaluating the educational impact of visualization , 2003, ITiCSE-WGR '03.

[70]  Jens Bennedsen,et al.  Model-Driven Programming , 2008, Reflections on the Teaching of Programming.

[71]  Elliot Soloway,et al.  A Goal/Plan Analysis of Buggy Pascal Programs , 1985, Hum. Comput. Interact..

[72]  Margaret M. Burnett,et al.  Impact of interruption style on end-user debugging , 2004, CHI.

[73]  Judith Good,et al.  Program comprehension and authentic measurement: : a scheme for analysing descriptions of programs , 2004, Int. J. Hum. Comput. Stud..

[74]  Stanley Letovsky,et al.  Cognitive processes in program comprehension , 1986, J. Syst. Softw..

[75]  Phil Robbins,et al.  Report on the fourth BRACElet workshop , 2007 .

[76]  Benedict duBoulay,et al.  Some Difficulties of Learning to Program , 1986 .

[77]  Nancy Pennington,et al.  Comprehension strategies in programming , 1987 .

[78]  Paula Kotzé,et al.  Don't do this - Pitfalls in using anti-patterns in teaching human-computer interaction principles , 2008, Comput. Educ..

[79]  Kate Ehrlich,et al.  Knowledge and processes in the comprehension of computer programs. , 1988 .

[80]  Jean Scholtz,et al.  Mental representations of programs by novices and experts , 1993, INTERCHI.

[81]  Walter Kintsch,et al.  Toward a model of text comprehension and production. , 1978 .

[82]  Sue Fitzgerald,et al.  Debugging assistance for novices: a video repository , 2007, ITiCSE-WGR '07.

[83]  Tore Dybå,et al.  Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise , 2007, IEEE Transactions on Software Engineering.

[84]  Amela Karahasanovic,et al.  Comprehension strategies and difficulties in maintaining object-oriented systems: An explorative study , 2007, J. Syst. Softw..

[85]  Anders Berglund,et al.  Research perspectives on the objects-early debate , 2006, ITiCSE-WGR '06.

[86]  Beth Simon,et al.  Evaluating a new exam question: Parsons problems , 2008, ICER '08.

[87]  Randall W Engle,et al.  Working memory, short-term memory, and general fluid intelligence: a latent-variable approach. , 1999, Journal of experimental psychology. General.

[88]  Errol Thompson,et al.  Using a subject area model as a learning improvement model , 2006 .

[89]  Ari Korhonen,et al.  Roles of Variables in Teaching , 2007, J. Inf. Technol. Educ..

[90]  Kevin F. Collis,et al.  Evaluating the Quality of Learning: The SOLO Taxonomy , 1977 .

[91]  Françoise Détienne,et al.  What model(s) for program understanding? , 2007, ArXiv.

[92]  Landon P. Cox,et al.  Design patterns: an essential component of CS curricula , 1998, SIGCSE '98.

[93]  Anneliese Amschler Andrews,et al.  A Coding Scheme to Support Systematic Analysis of Software Comprehension , 1999, IEEE Trans. Software Eng..

[94]  Marja Kuittinen,et al.  Teaching roles of variables in elementary programming courses , 2004, ITiCSE '04.

[95]  N. Pennington Stimulus structures and mental representations in expert comprehension of computer programs , 1987, Cognitive Psychology.

[96]  Ben Shneiderman,et al.  Syntactic/semantic interactions in programmer behavior: A model and experimental results , 1979, International Journal of Computer & Information Sciences.

[97]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[98]  Patricia Haden,et al.  Parson's programming puzzles: a fun and effective learning tool for first programming courses , 2006 .

[99]  Ivica Crnkovic,et al.  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, FSE 2007.

[100]  Elliot Soloway,et al.  Mental models and software maintenance , 1986, J. Syst. Softw..

[101]  Nadeem Abbas,et al.  Properites of "Good" Java Examples , 2010 .