ABSTRACT

One of the difficulties of teaching a novice how to program is to describe, at the right level of detail, the machine he is learning to control. Novices are usually ignorant about what the machine can be instructed to do and about how it manages to do it. Basing one's teaching on the idea of a notional machine is an effective strategy for tackling this difficulty. The notional machine is an idealized, conceptual computer whose properties are implied by the constructs in the programming language employed. That is, the properties of the notional machine are language, rather than hardware,

dependent. For example, a novice learning BASIC will be learning how to work a BASIC machine; and this is quite different from a LISP machine (say), both in terms of the mechanisms he must learn to understand and the class of problems that can be solved easily with those mechanisms. For a strategy based on a notional machine to be effective, the notional machine must conform to two important principles. First, the notional machine employed should be conceptually simple, and second, methods should be provided for the novice to observe certain of its workings in action.