Contains explanations of what abstract data types are and how to specify them, and of the connection between abstract data types and program components. The book does assume a knowledge of Modula-2, although some of the difficulties of using opaque types are discussed before they are used.