In this second edition of his successful book, experienced teacher and author Mark Allen Weiss continues to refine and enhance his innovative approach to algorithms and data structures. Written for the advanced data structures course, this text highlights theoretical topics like abstract data types and the efficiency of algorithms, as well as performance and running time.
This edition also includes a new chapter on advanced data structures and material on the Standard Template Library that conforms to the new standard. In addition, all code has been updated and tested on multiple platforms and conforms to the ANSI ISO Final Draft standard. Before covering algorithms and data structures, the author provides a brief introduction to C++ for programmers unfamiliar with the language. All of the source code will be available over the Internet.
Dr. Weiss also distinguishes the book with his clear, friendly writing style, logical organization of topics, and extensive use of figures and examples that show the successive stages of an algorithm.
Review by Todd Ebert (Long Beach California)
I used this book for teaching an introductory data structures and algorithms course at Long Beach St. University. In teaching or studying such a course one has to walk a fine line between giving a good theoretical presentation of the material, but at the same time discuss practical implementation issues. Weiss walks this line with good balance and agility, but his presentation of the material does raise some pedagogical issues; the most obvious being whether or not it is prudent to use C++ code in favor of psuedocode. Not an easy question to answer. One compromise would be to first present the algorithms in pseudocode and then follow it up with C++ in an appendix. This is the choice taken by Drozdek, in his book with the same name. To Weiss’s credit, however, I do not think this would work as well. Since he does very well at explaining many practical aspects of the implementation, it seems appropriate to have the code nearby. On the other hand, there were occassions when I felt that the code seemed too advanced and overly refined for an audience consisting of mostly students who are just learning how to program in C++. It only detracts from the issues at hand, namely the data structures and algorithms.
With so much detail paid to implementation issues, one aspect of the subject (possibly the most important aspect) that suffers most is the mathematical analysis. Frankly, there just isn’t enough of it, to at least support many of the more advanced problems posed at the end of each chapter. Although an abundance of such problems is supplied, it would have helped to see a sample of them worked out as examples throughout the main text.
On a more positive note however, I did enjoy Weiss’s down-to-earth style of writing. Helps make the material seem unthreatening (of course, until one reaches the problems at the end of each chapter!).
Finally, despite some of its shortcomings, I still consider this book one of the best on the subject (from an implementation point of view) and hence rate it with four stars.