I am very pleased to have this new book in the Aho/Ullman series Principles of Computer Science. I see this book as a major step toward making computer science theory accessible to the wide range of students who need to know the subject. It covers a good segment of the classical material on data structures and algorithms, but it does so in a spritely way that involves and challenges the student at every turn of the page. I think you will be amused and challenged by the original examples and applications of these ideas.
The book concludes with an accessible introduction to the modern ideas in complexity theory. These include cryptography, complexity classes related to randomness, and interactive proofs. I hope the reader will enjoy and profit from this book as I did.
compared to what? covers all the basics of algorithm analysis but it does not just supply algorithms to memorize - it lets you guide your students through the process of breaking down and solving aigolithmic problems. The invaluable analytic skills developed through this innovative approach will appiv to anj, programming assignment-no matter the size of the problem or the language and macnine used. The book does not assume a high degree of familiarity with discrete mathematics-in fact, all mathematical concepts crucial to algorithm analysis are explained in the appendices. Each chapter centers on a basic problem and works through a variety of available . options for its solution rather than declaring a single best answer. Within the chapters, carefully orchestrated. 'Pauses'-helpful questions and strategy suggestions-point students to workable solutions and to increasinglv more advanced variations and applications. End-of-chapter 'Codas' restate each chapter's major themes and guide the transition into the next set of problems. Compared to What? will help students analyze problems, determine what needs to be optimized, and pinpoint inefficiencies and inaccuracies in their programs. Its fr-iendlv but challenging style, inventive examples 'and analogies, descriptions of state-of-the-art applications, and pragmatic focus will help you teach students to create algorithmic solutions-not merely memorize them.