Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Algorithms unlocked
Cormen T., The MIT Press, Cambridge, MA, 2013. 240 pp. Type: Book (978-0-262518-80-2)
Date Reviewed: Sep 24 2013

Computers are ubiquitous. Everyone uses computers and computer-based systems for many daily activities. Many computer applications are very user-friendly, meaning we can use them without understanding how they work, just as we can drive a car without knowing how the engine works. In many cases, however, knowledge of how the computer works, and what algorithms are operating behind the current application, can improve the efficiency of our computer use.

Traditionally, sophisticated innovative algorithms are taught only to students who have already acquired programming skills; such students can thus effectively understand the algorithms they encounter. It does not have to be that way, however. Many algorithms could be explained to computer users who have never programmed before. This idea prompted Thomas Cormen, one of authors of the most widely used textbook on algorithms [1], to write a version of his book for nonprogrammers.

The book starts with a description of what an algorithm is (chapter 1) and an explanation that running time is a reasonable measure of an algorithm’s effectiveness (chapter 2). In chapter 3, Cormen presents a natural algorithm for exhaustive search in linear time, which describes the act of looking for a document in an unsorted list. He gives the example of looking for books in a library to demonstrate that sorting (putting the books in alphabetical order) makes the search much faster. This leads the reader to understand the need for efficient sorting algorithms. The author describes natural sorting schemes such as selection sorts and insertion sorts, and shows (somewhat unexpectedly for non-computer science (CS) readers) that nonintuitive schemes such as mergesort and quicksort are much more efficient. These interesting results exemplify the numerous clever algorithmic tricks that exist, without which modern computer applications would be much less efficient or even impossible.

In chapter 4, Cormen shows that algorithms like mergesort are asymptotically optimal: their computation time cannot be drastically improved. Chapters 5 and 6 describe graph-related algorithms, used for finding the critical path (useful in manufacturing engineering), for example, or for finding the shortest path through a prescribed route. Chapter 7 lists several string-matching algorithms and how they are used in bioinformatics. Chapter 8 describes algorithms used in cryptography, both traditional cryptographic algorithms (private key) and the RSA algorithm for public key cryptography. Chapter 9 describes two algorithms used for data compression: the Huffman code and the Lempel-Ziv-Welch (LZW) compression scheme. The final chapter provides an overview of nondeterministic polynomial-time (NP) hard problems; efficient algorithms that solve all instances of these problems are only possible if P=NP.

The book uses only basic math and does not require any prior experience in computing or programming. It is well written, with a clear, concise, but colloquial style; well-explained practical applications; and numerous easy-to-trace examples of how each algorithm works. It is a perfect book for readers with no programming background who want to learn about algorithms in order to use computers better or who are simply curious about how computers work. These readers will definitely learn how to use computers more efficiently, and some of them may decide to gain a deeper knowledge of some of these problems. For that purpose, each chapter has a list of more serious and in-depth sources related to its topic.

Students and practitioners with programming experience will also benefit from this book. Even computing professionals will appreciate the clear descriptions of lesser-known algorithms such as LZW or string matching, although they may skip a few chapters on familiar subjects such as searching and sorting. Instructors can use excerpts from this book as interesting examples of creative algorithms for students who are just starting out in CS. Most readers will lament the lack of exercises--the book’s only (rather minor) drawback.

In short, this book is highly recommended for everyone.

More reviews about this item: Amazon

Reviewer:  V. Kreinovich Review #: CR141583 (1312-1062)
1) Cormen, T. H.; Leiserson, C. E.; Rivest, R. L.; Stein, C. Introduction to algorithms (3rd ed.). MIT Press, Cambridge, MA, 2009.
Bookmark and Share
  Editor Recommended
Featured Reviewer
 
 
Nonnumerical Algorithms And Problems (F.2.2 )
 
 
Numerical Algorithms And Problems (F.2.1 )
 
Would you recommend this review?
yes
no
Other reviews under "Nonnumerical Algorithms And Problems": Date
Improving the performance guarantee for approximate graph coloring
Wigderson A. Journal of the ACM 30(4): 729-735, 1983. Type: Article
Feb 1 1985
Fast algorithms constructing minimal subalgebras, congruences, and ideals in a finite algebra
Demel J., Demlová M., Koubek V. Theoretical Computer Science 36(2-3): 203-216, 1985. Type: Article
Jan 1 1986
Complexity of the word problem for commutative semigroups of fixed dimension
Huynh D. Acta Informatica 22(4): 421-432, 1985. Type: Article
May 1 1986
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy