ACCU Home page ACCU Conference Page
Search Contact us ACCU at Flickr ACCU at GitHib ACCU at Facebook ACCU at Linked-in ACCU at Twitter Skip Navigation

Search in Book Reviews

The ACCU passes on review copies of computer books to its members for them to review. The result is a large, high quality collection of book reviews by programmers, for programmers. Currently there are 1949 reviews in the database and more every month.
Search is a simple string search in either book title or book author. The full text search is a search of the text of the review.
    View all alphabetically
Title:
Problem Solving, Abstraction and Design Using C++
Author:
Friedman&Koffman
ISBN:
0 201 30002 8
Publisher:
Addison-Wesley
Pages:
750pp
Price:
£?
Reviewer:
Burkhard Kloss
Subject:
algorithms; reference; beginner's c++
Appeared in:
10-2
Unlike most introductions to C++, this is specifically an academic textbook aimed at undergraduates with little or no programming experience. As a result, the scope of the book is wider than you might expect, though that is not necessarily a bad thing. The book assumes very little about the reader and is a generalintroduction to programming using C++ as a first language.

In good textbook style, there are review questions and exercises of varying levels at the end of each chapter. Answers to some of the questions are provided in an appendix. Lecturers can order an Instructor Manual and additional material is available online.

The C++ seems reasonably up to date; for example, the standard string class is used everywhere (except in the inevitable and useful,

simple_string
example).
const
is used instead of
#defines
, but sadly
const
member functions are omitted.

Sadly, the book contains its share of horrors and nasty typos:

void main (void), #INCLUDE, COUT
and other such nonsense appear more often than they should. Some examples mix the user interface into the program logic. This sets an extremely bad example and such practices should really be anathema to authors professing to teach Software Engineering as well as programming.

Still, the breadth of topics is impressive: an overview of computing and programming, an overview of C++, top-down design with functional decomposition and ADTs, basic control structures, files, basic data types, introduction to Software Engineering, user defined types and 'data modelling', recursion and dynamic data structures. In other words, more or less all the things that a basic course should cover. I was pleasantly surprised to see a section on professional ethics, as well as pre- and post-conditions and invariants being mentioned. I also like the tips, tricks and pitfalls that are highlighted throughout the book.

The appendices should be quite useful for a beginner, especially the table of selected library facilities and the operator precedence table.

Still, I would hesitate to wholeheartedly recommend this book as a course text, though this may change if the next edition is revised and the few (but nasty) problems are ironed out. Most of them seem, as so often, to be more due to lax editing than lack of knowledge. If, as a lecturer, you are looking for a reasonable introduction to programming, you should at least consider this book. At the very least it will give you a wealth of material and you may find it appropriate for your course after all.

As an experienced programmer converting to C++, you should probably give it a miss because it contains too much material that is not relevant to you. However, if you are relatively new to computing, I think you will find a lot of useful things in this book. It won't 'just' teach you C++, but after all, that's not all you need to learn to become a C++ programmer!