REVIEW - Programming Abstractions in C - A Second Course in Computer Science

Title:

Programming Abstractions in C - A Second Course in Computer Science

Author:

Eric Roberts

ISBN:

0201545411

Publisher:

Addison-Wesley (1997)

Pages:

819pp

Reviewer:

Mark Batty

Reviewed:

December 1998

Rating:

3 out of 5

In summary I feel many programmers/engineers who have restricted algorithm/abstraction knowledge would learn a great deal from this book.

This book is intended to be used in a second programming course in a college or university, either by students or instructors; as part of the CS2 curriculum. Although the book is primarily aimed at students learning computer science, I believe many junior (and some experienced) programmers/engineers would learn from this text.

The book is divided into four main parts. Part one (Preliminaries) gives an overview of ANSI C, data types in C and libraries and interfaces. The chapters in this part explain all the main areas of C in an understandable manner in some detail, however the less experienced person may need (and indeed should) read this part at least twice to fully appreciate the later parts. This part also introduces an extensive set of libraries that are used throughout the book, these are obtained by FTP.

Part two (Recursion and Algorithmic Analysis) covers the basics of recursion, backtracking and algorithmic analysis. It deals with the apparent complexity of recursion in an easy way with plenty of examples. The main examples used are factorials, fibonacci, towers of Hanoi, permutations, solving mazes, minimax, sorting, Big-O notation, quicksort, mathematical induction.

Part three (Data Abstraction) builds on part two by giving detailed descriptions and non-recursive implementations of basic ADTs and how these can be improved for efficiency. The main examples used are stacks, editors, queues and simulations, symbol tables, hashing, mapping and iterators.

Part four (Recursive data) also covers ADTs, however the ADTs in part four are implemented recursively. The main examples used are lists, large integers, binary and AVL trees, expression trees, parsing, sets, iterators and graphs. The last chapter in this part takes a brief look at Java and the object oriented approach.

The book contains full implementations of all the subjects covered. There is also a large section at the end of each chapter containing a summary, review questions and programming exercises.

In summary I feel many programmers/engineers who have restricted algorithm/abstraction knowledge would learn a great deal from this book.


Book cover image courtesy of Open Library.