REVIEW - Data Structures and Algorithms in Java

Title:

Data Structures and Algorithms in Java

Author:

Michael T. Goodrich, Roberto Tamassia

ISBN:

0471193089

Publisher:

Wiley (1998)

Pages:

760pp

Reviewer:

Burkhard Kloss

Reviewed:

December 1998

Rating:

★★★☆☆

Every now and then you come across a book which is a pleasure to review and this is one of them. ...Should you buy this book? If you are a University lecturer looking for a text to teach Data Structures and Algorithms and the course contains Java, then this book is almost certainly for you.

Every now and then you come across a book which is a pleasure to review and this is one of them. Aimed at the University undergraduate market, Data Structures and Algorithms in Java manages to be thorough, comprehensive and readable - a rare feat. The text is also well structured and the authors have clearly highlighted different paths aimed at different courses.

Starting with a brief chapter on Object-Oriented Design, the book quickly moves on to a general discussion of algorithm analysis. Thirteen chapters discussing the standard data structures and algorithms that you would expect to find in a Data Structures and Algorithms book follow this. All the usual suspects are here; Linked Lists, Binary Trees, Stacks and Queues - each discussed clearly and in detail. The book clearly separates the concept of an Abstract Data Type from its implementation. Granted, this is a little easier if your chosen implementation language is Java, but it is sadly still rare enough to deserve a special mention. Each ADT is described abstractly, followed by a definition of a suitable Java interface. The relation between different ADTs and algorithms acting on them are all explained in detail, usually before the implementation options are even mentioned. Where appropriate, the book has graphs and examples, as well as case studies. As you would expect in a book aimed at the academic market, there are ample exercises in varying levels of difficulty. A pleasant surprise was the inclusion of some more unusual and recent items in the book, such as skip lists, pattern matching algorithms and multi-dimensional search trees. There is also the occasional reference to design patterns and general design issues are also addressed when necessary.

The appendices consist of a handy Java Primer - not quite enough to really teach you, but a nice refresher - and a small mathematical reference that summarises some of the key formulas used in the book.

The book comes with a trial edition of Visual J++ 1.1 on CD. The web site (http://www.wiley.com/college/cs2java/) also has a lot of additional material, including source code and teaching materials. More interesting for potential purchasers - unless it is a set course text for you - are the sample chapters and the source code. There are also a number of applets demonstrating the algorithms, as well as links to relevant sites.

Should you buy this book? If you are a University lecturer looking for a text to teach Data Structures and Algorithms and the course contains Java, then this book is almost certainly for you. If you are a student, you probably have no choice but to buy the set text, though this book would make good background material. For a practitioner, the case is less clear cut. If you already have a good book on algorithm (Knuth or Sedgwick spring to mind), don't throw it away in favour of this one. Yes, the code is in Java, but that should not be the main selling point of a book like this. However, if you do not yet have a good DS&A book and can read Java, this one should be high on your list of potential purchases.

An alternative review, with admittedly a similar conclusion, can be found athttp://www.javaworld.com/javaworld/jw-06-1998/jw-06-bookreview.html


Book cover image courtesy of Open Library.