Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
The algorithm design manual (3rd ed.)
Skiena S., Springer International Publishing, Cham, Switzerland, 2020. 793 pp.  Type: Book (978-3-030542-55-9)
Date Reviewed: May 12 2021

Algorithms have been around for a long time, for example, the Euclidean algorithm to find the maximum common divisor of two integers is about 2400 years old. Nowadays, though, “algorithm” refers to instructions executed by computers. Algorithm research is an extremely active and fruitful area; thus, an updated edition of this book is justified.

The algorithm design manual is intended for two audiences: students taking a course in algorithms, and computer professionals. Readers are expected to have completed a course in data structures, or to have an equivalent background. Both the first and second editions have been reviewed in Computing Reviews [1,2,3]; I encourage you to take a look at those reviews as well.

This book is divided into two parts: “Practical Algorithm Design” and “The Hitchhiker’s Guide to Algorithms.” The first part aims to develop the skills needed to solve problems in the real world. Material about hashing, randomized algorithms, divide-and-conquer methods, approximation algorithms, and quantum computing is either new or expanded. Also covered are algorithm analysis, data structures (stacks, queues, dictionaries, binary search trees), sorting, graph algorithms, combinatorial searching, dynamic programming, and NP-completeness.

Part 2 is a catalog of common problems and a nearly encyclopedic list of resources. This list--obviously the result of years of careful hoarding, sifting, and cataloging--is a valuable resource in itself. The first part of the book frequently references the second part. In fact, much of the material in the “Hitchhiker’s Guide” section would be better placed in the “Algorithm Design” section. To take full advantage of Part 2, readers will need to access a well-stocked research library, with plenty of time to select and evaluate referenced material.

When discussing algorithms, Skiena relies primarily on high-level informal descriptions rather than programmatic implementation details or formal mathematical analysis. This book is practical rather than theoretical. Skiena highlights the need for a deep understanding of the capabilities and limitations of different approaches, and the use of incremental trial and error, mixing different data structures and algorithms in perhaps novel and unexpected ways to arrive at acceptable solutions. This approach is illustrated through “war stories” that recount actual challenging problems. Hints and insights implicit throughout will become more apparent with increasing experience.

Source code, while not abundant, is expressed in C, but could be easily translated to another language. Chapters end with an abundance of problems, questions to help with job interviews, and links to programming challenges and source code websites.

To keep the book from getting even bigger, Skiena has removed what he considers less important material, but doesn’t tell you what it was. So, if you have the second edition, keep it until you are confident that the new edition has all the information you need.

To solve problems effectively, you should master the basic tools of the trade and use then effortlessly as needed. Readers are expected to be familiar with the fundamentals of data structures and algorithms. On page 443, for example, Skiena says: “Among balanced search trees, AVL and 2/3 trees are now passé, and red-black trees seem to be more popular”; however, he does not give any details about what these things are. I believe that everyone whose toolbox includes algorithms ought to be intimately familiar with red-black trees--what they are, how they are constructed, and why they are popular.

To ensure you have the appropriate background, I strongly recommend that as you read this book, you also have at your side a good book on fundamental data structures and algorithms. Several excellent choices are available; Robert Sedgewick’s textbooks on algorithms [4], for example, use Pascal, C, C++, or Java for source code, while the language-agnostic book by Cormen et. al. [5] uses pseudocode.

The book’s companion website (https://www.algorist.com/) has material potentially useful to students and instructors.

Finally, I must mention that my initial reaction to this book was quite negative. Here was an author who either never heard of or simply disregarded wise advice: be concise, that is, make every word and every sentence count. A style that is chatty and friendly to one reader may feel careless and sloppy to another. Judging by the size of the bibliography (pages 719 to 768), Skiena loves to read. In that spirit, I urge him to add two small gems to his reading list: The elements of style [6] and The golden book on writing [7].

More reviews about this item: Amazon

Reviewer:  Edgar R. Chavez Review #: CR147263 (2107-0166)
1) Drozdek, A. Review of The algorithm design manual, by S. Skiena. Computing Reviews (June 1, 1998), CR Rev. No. CR121541 (9806-0381).
2) Fahle, W. Review of The algorithm design manual (2nd ed.), by S. Skiena. Computing Reviews (Dec. 12, 2008), CR Rev. No. CR136339 (0911-1021).
3) Linares Lopez, C. Review of The algorithm design manual (2nd ed.), by S. Skiena. Computing Reviews (Feb. 17, 2009), CR Rev. No. CR136512 (1001-0023).
4) , Robert Sedgewick https://www.cs.princeton.edu/~rs/ (01/21/2021).
5) Cormen, T. H.; Leiserson, C. E.; Rivest, R, L.; Stein, C. Introduction to algorithms (3rd ed.). MIT Press, Cambridge, MA, 2009.
6) Strunk, W.; White, E. B. The elements of style (4th ed.). Allyn and Bacon, Boston, MA, 1999.
7) Lambuth, D. The golden book on writing. Viking Press, New York, NY, 1964.
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
Algorithm Design And Analysis (G.4 ... )
 
Would you recommend this review?
yes
no
Other reviews under "Algorithm Design And Analysis": Date
Near optimal online algorithms and fast approximation algorithms for resource allocation problems
Devanur N., Jain K., Sivan B., Wilkens C.  Journal of the ACM 66(1): 1-41, 2019. Type: Article
Sep 21 2021
 Introduction to distributed self-stabilizing algorithms
Altisen K., Devismes S., Dubois S., Petit F.,  Morgan&Claypool Publishers, San Rafael, CA, 2019. 166 pp. Type: Book (978-1-681735-36-8)
May 12 2020
Comparative study of computational algorithms for the Lasso with high-dimensional, highly correlated data
Kim B., Yu D., Won J.  Applied Intelligence 48(8): 1933-1952, 2018. Type: Article
Oct 24 2018
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright © 2000-2021 ThinkLoud, Inc.
Terms of Use
| Privacy Policy