Review of Foundations of Algorithms From: Computing Reviews, December, 1996, Vol. 37, No. 12. The authors discuss designing algorithms, complexity analysis of algorithms, and computational complexity, but do not cover analysis of correctness. The book is designed for computer science students who have had little calculus and are uncomfortable with abstract mathematics. The authors explicitly assume only college algebra and discrete structures. They use typical data structures without resorting to distracting asides. In their proofs, they supply many more details than in the usual terse text for mathematical sophisticates. They use many examples to motivate the proofs and notation. The best part of the book is its organization. The book is organized not by application topics, but by algorithmic methods: divide and conquer, greedy, dynamic programming, backtracking, and branch and bound. One weakness of the text is that it does not lend itself to programming projects. When a significant programming project is assigned for an algorithm design topic, students integrate the theoretical material much better. Finding programming projects that are neither trivial nor complicated is difficult, however. It would be useful if the book were to provide several such projects for each chapter. D.M. Campbell, Provo, UT