Covering thoroughly the central subject of computer science--data structures and algorithms--this text offers a practical introduction to theory, implementation, and applications using the Abstract Data Type approach. For each of the major data types, it provides a definition in terms of objects and operations, an illustration of its use, and at least one method of implementation. Specific topics include parsing, simulation, expression simplification, BNF, and backtracking. Most implementations are analyzed informally through the Big-Oh notation, introduced in the first chapter. Each discussion is followed by larger applications and overviews of related issues. Special emphasis is placed on recursion, which is fully explained and used to clarify other concepts in the book. In addition, program readability is also stressed and reinforced. Throughout, the superiority of Modula-2 over earlier languages is fully exploited. Exercises comprise almost 15% of the text.