The authors intend this book for a first course on data structures and abstract data types for undergraduate computer science students. The approach taken in the book is refreshingly different from that of traditional textbooks on the topic. Stubbs and Webre attempt to teach modern software engineering practice while they present the more conventional topics in theory. Though this work is unlikely to replace the standard text by Horowitz and Sahni [1], it succeeds in what it tries to do.
The book is reassuring evidence that topics widely discussed in software engineering research over the last decade are filtering down to undergraduate teaching. Topics in data structures, such as tree-balancing algorithms, hashing, strings, graphs, and abstract data type specifications, have traditionally been presented without reference to how they fit into a larger software system. This book better prepares students for situations they will meet in engineering software systems by augmenting the abstract knowledge of data structures with software engineering techniques for defining and specifying modules to support these abstractions. This context adds a concreteness that is often lacking.
Modula-2 has been chosen as the programming language for the book, and numerous programming examples are given. Typically, a data structure is described and its specification is presented in terms of a Modula-2 definition module. The semantics of the programs are specified semiformally, with pre- and post-conditions embedded as comments. This paradigm gives students a good model for programming-in-the-large that I expect they will imitate; if so, the standard of practice in programming will be raised markedly.
The only nagging reservation I have about the book stems from its graphic design: there is too much of it. The book would be much more pleasant to read with fewer fancy fonts and less distracting artwork.