Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Algorithms (4th ed.)
Sedgewick R., Wayne K., Addison-Wesley Professional, Upper Saddle River, NJ, 2015. 984 pp. Type: Book (978-0-134384-68-9)
Date Reviewed: Mar 29 2017

Sedgewick and Wayne’s Algorithms for many years has been the first book of an undergraduate course in programming, yet each of the editions seems to be written as a fresh book. The novelty of this edition is especially noticeable while looking at small side comments: for instance, when the authors explain the idea of stacking based on an analogy to web browsing where we push the just-seen web page on a history stack and can come back to it by using the back button (an equivalent to the pop operation). Another example of this kind is given when the need for complexity avoidance is supported with the case of the Internet denial of service threat.

This edition, consisting of approximately 1,000 pages, is divided into six parts. Besides being an introduction to thinking about programming, this is also a textbook introducing the Java language. A good example of the thorough way these concepts are introduced can be seen by looking at Part 1. The concepts of the application programming interface (API), data abstraction, and basic objects to store the processed data (bags, queues, and stacks) are described in the first three chapters of this part, which is mainly devoted to leading a reader into Java. Then, a chapter devoted to assessment of the processing time is given. Unlike many books that jump into the details of complexity theory with the Big O notation, the authors give very simple examples to show the basic classes of order-of-growth, which is a very good idea in a book that is an introduction to programming. This part ends with the application of the just-presented concepts to construct a solution to the union-find problem.

The authors in fact construct the elements that are used by programmers using any language by building them from scratch, starting from the data types (such as stacks, queues, and so on), not only presenting these concepts, but also their implementations done in various ways, in order to help the reader understand other aspects (the stack is constructed, first as an array and then as a linked list). This way of introducing the material is kept throughout the whole book.

The following four parts are focused on classical problems for algorithm construction: sorting (with emphasis on the mergesort and quicksort algorithms), searching (search trees and hash tables are covered thoroughly), basic graph algorithms (with a focus on the representation of undirected and directed graphs, as well as searching for minimum spanning trees and shortest paths), and operations on strings (including substring search and data compression).

The last part presents a selection of various problems of different kinds, such as how to run an event-driven simulation or how to deal with classical network flow problems (for example, looking for maximum flow). With all these examples, the book provides the reader not only with the philosophy of constructing algorithms, but also serves as a cookbook for many fundamental solutions to the problems met in various fields.

From one edition to the other, the didactic part of this book becomes more and more sophisticated, apparently mirroring the new teaching ideas exercised by the authors. Now, each chapter ends with some extending questions with the given answers, as well as simple problems to be solved by readers on their own (there are two types of such tasks: to think only with a piece of paper and to solve with a computer by developing a program). Moreover, my version of the book came with access to the streaming video lectures related to the contents of the book. Sometimes these lectures expand the material considerably; for instance, the lecture on linear programming covered vastly more than the book. These lectures are a valuable addition to this perfect textbook.

More reviews about this item: Amazon

Reviewer:  Piotr Cholda Review #: CR145148 (1706-0340)
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
Nonnumerical Algorithms And Problems (F.2.2 )
 
 
Numerical Algorithms And Problems (F.2.1 )
 
 
Reference (A.2 )
 
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