for algorithms can be considered a positive (although de nitely not a novel) feature. A consequent coupling of algorithm presentation with its analysis is also a very good thing. However, a better thing would be if an algorithm was not only analysed afterwards, but if complexity considerations were used beforehand to motivate the design of it (remember, the book s title is Algorithm design). In seeking the right amount of formality, the authors decided to work with abstract data types in an informal way. To some extent, this is a matter of taste. To some extent, this is a matter of consideration what can be gained by using e.g., the apparatus of axioms. For example, if analysis of algorithms was concerned also with their correctness, formal speci cations would probably play a bigger role. Among other positive features, extensive exercises in each chapter should be mentioned. They are of three kinds: reinforcement, creativity, and projects. Moreover, there are included several Java implementation examples in the book. The scope of topics included is another positive feature (again, it is de nitely a novel one). Text processing algorithms, network algorithms, some number theory and cryptography algorithms have been around in
/lp/association-for-computing-machinery/review-of-theory-of-semi-feasible-algorithms-by-lane-hemaspaandra-and-8GeD82vH6I