ABSTRACT

The necessity for multiple levels of description is accepted in computer science without question. When designing or analysing a complex information processing system one attends either to questions of what the requirements, goals, and tasks of the system are, or to questions of how the system achieves these goals, such as what the algorithms are and how the data are organised.1 One shifts between these two levels of description often

without regard for a third, more detailed level, that of the actual hardware on which the algorithms run and the data reside. These three levels of description are rather distinct in computer science, and each has its appropriate use and limitations. It is simply not feasible to describe a complex computation in terms of events at the level of the hardware. The technical language and formal principles that are relevant at the level of the digital hardware are neither appropriate nor relevant at the level of algorithm and program, and vice versa. Descriptions of computations are best made via a technical language and a set of formal principles concerned with algorithms, data structures, and other relevant abstractions.