![]() |
|
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:
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
| Readability |
|
| Originality |
|
| Organization |
|
| Accuracy |
|
| Consistency |
|
| Depth |
|
| Timeliness |
|
| Editing |
|
| Design |
|
| Overall Value |
|
Explanation of ERCB rating scale: No stars = unacceptable, 1 Star = marginal, 2 Stars = average, 3 Stars = above average, 4 Stars = exceptional.