Introducing object-oriented software design through the familiar vehicle of the Abstract Data Type, this text provides a comprehensive overview of abstraction, complexity, data structures, software design, and their underlying theories. It is the second in a series of four books by Tucker providing a first introduction to computer science. The fully developed student lab manual and accompanying software provide challenging programming assignments and reinforcement of text concepts. Key advanced topics in computing, such as operating systems and compilers, are previewed as applications of software and design principles. Also available are a student manual (0-07-065454-9) and instructor's manaual (0-07-065453-0).