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
Programming Abstractions in C
Eric S. Roberts
Mark Batty
advanced c; algorithms; data structures
Appeared in:
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.