Electronic Review of Computer Books

[ ERCB Home | New | Feature | Brief | DDJ | Letters | Links ]

[an error occurred while processing this directive]

Vital Statistics

Title C++ An Introduction to Data Structures
Author Larry Nyhoff
Publisher Prentice Hall
http://www.prenhall.com/
Copyright 1999
ISBN 0-02-388725-7
Pages 700
Price $63.00


A Return to Fundamentals

C++: An Introduction to Data Structures, by Larry Nyhoff, is an undergraduate course text on data structures and associated algorithms as expressed in the C++ language. It is modeled on curriculum recommendations of the ACM (http://www.acm.org/education/curricula.html) for CS2, and its view of C++ is based on the 1997 ANSI/ISO Draft. It is an extraordinary textbook forming an excellent introduction to the discipline of programming.

Writing textbooks is much harder than writing general computing books. While authors writing for general publication can cater to their own tastes, textbook authors must strive for both orthogonality and breadth, knowing the reader's exposure to the matters under discussion may be limited for years to those encountered in the textbook. At the same time, the presentation must make the topics memorable.

Nyhoff, of the Calvin College Department of computer science (Grand Rapids, Michigan), succeeds in satisfying these goals. The presentation is both rich and well targeted to undergraduates. It is written in a style surprisingly engaging even for the expert. This is the clearly one of the best volumes of its genre.

The book is about data structures in the classic sense: Nyhoff might have titled the book Algorithms + Data Structures = Programs if Niklaus Wirth hadn't already used the title in the 1960s. C++: An Introduction to Data Structures deals broadly with basic computational algorithms, examining in painstaking detail the data structures that empower the algorithms, from scalars to members of the Standard Template Library.

The elements of programming, the elements of structure, the elements of algorithms, and (hallelujah) the elements of proof of correctness are a few of the important, non-C++-specific topics covered in some depth. Deductive proof of a program's correctness seems to have gone out of fashion in these days of high-powered debuggers and automated test suites; not so, thankfully, in Nyhoff's universe of discourse.

The major sections of the book are:

  1. Software Engineering
  2. Introduction to Data Structures and Abstract Data Types--C-Style Types
  3. More About Data Structures and ADT--C++ Types
  4. Stacks
  5. Queues
  6. Improving ADTs--Part 1: Templates and Standard Containers
  7. Improving ADTs--Part 2: Recursion, Algorithm Analysis and Standard Algorithms
  8. Lists
  9. Other Linked Structures
  10. Binary Trees
  11. 1Sorting
  12. OOP and ADTs
  13. Trees
  14. Graphs and Digraphs

Nyhoff consistently has students learn how to solve a problem "by hand" in application code before demonstrating to them that the solution is already embodied in one or another standard library. Thus, different is the computer science approach from the weak habits inculcated by help files accompanying popular microcomputer compilers.

There is a very satisfying economy and thoroughness to the quizzes and exercises presented at the end of each section. A number of supplementary materials are described in the preface as "planned," including a lab manual and a web site (http://www.prenhall.com/nyhoff/) which, at last check, still displays the dreaded "under construction" logo.

If you are teaching an undergraduate introduction to computer programming and either have no specific preference as to programming languages, or actively desire to teach the course in well-stepped, rigorously standard C++, this book is for you.

-- Jack Woehr


Quick Rating

Readability Star Star Star Star
Originality Star Star Star
Organization Star Star Star Star
Accuracy Star Star Star Star
Consistency Star Star Star Star
Depth Star Star Star
Timeliness Star Star Star Star
Editing Star Star Star Star
Design Star Star Star Star
Overall Value Star Star Star Star

Explanation of ERCB rating scale: No stars = unacceptable, 1 Star = marginal, 2 Stars = average, 3 Stars = above average, 4 Stars = exceptional.


Copyright © 1999 Electronic Review of Computer Books
Created 2/25/1999 / Last modified 2/25/1999 / webmaster@ercb.com