This book, originally published in 1992, encapsulates ten years of research at the Open University’s Human Cognition Research Laboratory. The research investigates the problems of novice programmers, and is strongly oriented toward the design and implementation of "programming environments" aimed at eliminating or easing novices’ problems. A range of languages is studied: Pascal, SOLO, Lisp, Prolog and "Knowledge Engineering Programming". The primary emphasis of the empirical studies is to gain some understanding of novices’ "mental models" of the inner workings of computers. Such (erroneous) models are constructed by novices in their own heads to account for the idiosyncrasies of particular programming languages. The primary emphasis of the implementations described in the book is the provision of "automatic debugging aids", i.e. artificial intelligence programs which can analyse novices’ buggy programs, and make sense of them, thereby providing useful advice for the novices.
Another related strand taken in some of the work is the concept of "pre-emptive design", i.e. the provision of tools such as syntax-directed editors and graphical tracers which help programmers avoid many frequently-occurring errors. A common thread throughout the book is its Cognitive Science/Artificial Intelligence orientation. AI tools are used, for instance, to construct simulation models of subjects writing programs, in order to provide insights into what their deep conceptual errors are. At the other extreme, AI programs which were developed in order to help student debug their programs are observed empirically in order to ensure that they provide facilities actually needed by real programmers.
This book will be of great interest to advanced undergraduate, postgraduate, and professional researchers in Cognitive Science, Artificial Intelligence, and Human-Computer Interaction.
Table of Contents
List of Contributors. Preface. Acknowledgements. Part 1: Design Issues in Programming Environments 1. Design Features of a Friendly Software Environment for Novice Programmers Marc Eisenstadt 2. Principles for the Design of Dynamic Tracing Environments for Novice Programmers Tim Rajan 3. A Fine-Grained Account of Prolog Execution for Teaching and Debugging Marc Eisenstadt and Mike Brayshaw 4. A New Metaphor for the Graphical Explanation of Forward-Chaining Rule Execution John Domingue and Marc Eisenstadt Part 2: Empirical Studies and Cognitive Models 5. Errors in an Interactive Programming Environment: Causes and Cures Marc Eisenstadt and Matthew Lewis 6. An Evaluation of ADT: An Animated Prolog Tracer for Novice Prolog Programmers Tim Rajan 7. Some Pitfalls in Learning About Recursion Hank Kahney 8. Naïve Iteration: An Account of the Conceptualizations Underlying Buggy Looping Programs Marc Eisenstadt and Joost Breuker Part 3: Artificial Intelligence User Aids 9. The Automatic Debugging of Recursive Side-Effecting Programs Joachim Laubsch and Marc Eisenstadt 10. Syntactic Debugging of Procedural Programs Tony Hasemer 11. Plan Diagrams as the Basis for Understanding and Debugging Pascal Programs Rudi Lutz 12. An Automated Programming Advisor John Domingue. Indices.
Marc Eisenstadt, Mark Keane, Tim Rajan