A Lucid Exploration of Important Fundamentals

Clear, concise, visual explanations with a solid foundation in basic engineering.


A lot of programmers seem to think that you can get along without really understanding the fundamentals of data structures. With all the libraries available, this is often true. But, inevitably, you’ll be confronted with a problem that requires specialized solutions and may well waste your time trying to reinvent the wheel. This is the motivation that leads a good programmer to exploring or, for those who have already explored these areas, reviewing the implementation of basic data structures. Few books provide the kind of coverage and lucid style that Data Structures and Algorithms in Java from the Michale Waite Signature Series brings to the table.

The great strengths of this books is the focus on animating algorithms to visually enhance the reader’s understanding. Each of the basic algorithms and variations covered in the book comes with a small program (applet or application) which allows the reader to interactively explore the concepts presented in a way that highlights each of the important steps along the way. This provides a rare level of insight into the workings of each algorithm that matches the elegant exposition in the text.

The books evolves solutions from the basics to complex topic matter in a painless sequence of unfolding ideas. The reader is presented with an overview, array coverage, simple sorting and a look at stacks and queues in the first four chapters. Chapters 5 to 6 explore linked lists, recursion and revisit sorting, capitalizing on some of the ideas gained along the way. Binary, red-black and 2-3-4 trees are covered in chapters 8 to 10. Chapter 11 covers hash tables, with special attention paid to developing effective hashing algorithms. Chapter 12 covers heaps and Chapters 13 and 14 cover traditional and weighted graphs, respectively.

Each chapter provides examples and concise explanations, sprinkled with effective diagrams that clarify the fundamentals and lead the reader to a better understanding without the common difficulty that often accompanies this kind of material. The animated examples clear the way to a deeper understanding and allow the reader to absorb the example code with a better sense of what takes place in each of the algorithms.

There are a handful of current books that cover algorithms in Java. The language’s uncluttered syntax make it ideal for communicating this set of programming techniques. Despite the language’s clarity, it can still be confusing to drill down into complex algorithms without a good guide to lead you through the important concept in a logical, unfolding sequence. Data Structures & Algorithms in Java delivers an excellent road map, complete with landmarks, points of interest, and a well paved road to knowledge. It certainly comes highly recommended by this reader.