Suggested Reading
By Darryl Allen


dallen > cs > texts






       

All too many CS and Programming books are incomplete, incorrect, or both. It is very frustrating when trying to learn a new language or subject to find that the author of the book either has neglected to provide the needed information or that the information he/she provided is incorrect.

I have listed here some CS related books that I have found to be (pretty) readable, largely correct, and mostly complete. Some have been used as textbooks here at CSUH but most have not. Many of the below are reference books rather than textbooks.

Programming and Managing Programmers

The Practice of Programming, Brian Kernighan & Rob Pike
I get to spend time in CS3560 talking about programming tools, strategies, philosphy, library constuction and design, header files, portability, coding standards, etc. These are topics usually not covered in computer science textbooks and university classes, instead knowledge that must be "picked up on the streets". When students have in the past asked me to suggest a book they could read that contained that sort of information I always had to reply that I knew of no books containing this very practical and important information and threatened to write my own.
Last year I read this text and found that I contained 90% or more of the knowledge of development I'd hoped to convey to students but never had the time (in 10 weeks) to do so. This book contains a wealth of information about development and is written by highly skilled programmers. Every programmer should read this book as it explains things that normally could only be learned by years of real world programming experience.
The Mythical Man Month, Frederick Brooks
The book is a classic text about software development and management of software developers. Many of the points made have become standard bits of wisdom in management textbooks. It is a pity that many managers are making the same mistakes today that were made 30 years ago. Of course they must not have read this book. You should.
Peopleware: Productive Projects and Teams, Tom Demarco & Timothy Lister
I was prompted to read this book after coming across the term teamicide in an essay that cited this text. Having had the experience several times of being part of great programming team (extremely productive, fun, etc.) ruined by a poor hiring decision or other management mistake (not by me by the way!) I wanted to learn more about what it takes to get a good team to jell and what mistakes managers make that destroy such teams or prevent them from developing in the first place.
This book is a terrific read for all of us. Developers who never intend to move toward managerial roles will learn to recognize the signs that things are going to hell and cut their losses, and those who move into such managerial positions will learn from the mistakes of others.

Java

Thinking in Java, Bruce Eckel
I have been very unhappy with the Java books I have seen. This is the first Java book I have seen that is readable, reasonably correct (some definitions are incorrect), and does a decent job talking about the Object Oriented Programming (OOP) paradigm. Best of all the author makes it available free for download at his website.
Web Development with JavaServer Pages, Duane Fields and Mark Kolb
Wow. A JSP book that is written by folks that understand the technology and tell us what we need to know. This book is far and away the best JSP book I've read. Much better than Sun's book.

C

The C Programming Language, Kernighan and Ritchie
Well... this book is the one most of us learned C from. It is a classic and makes my list for sentimental reasons. The newest version deals with ANSI C and they've added information on the standard libraries. If you are actually going to write non-trivial programs in C, you need ...
The Standard C Library, P.J. Plauger
A fantastic book for C programmers who want to understand the the (ANSI) standard C libraries. This book contains descriptions of each of the 15 header files, detailed descriptions of the functions and macros, the rationale behind library design decisions and implementations of many of the functions. I learned a great deal from reading this book and keep it on my desk no matter where I am working.

C++

C++ provides the ANSI C libraries as well others, so those programming in C++ need to know what we think of as the standard C libraries. Their are 15 header files used to describe the interface to the C libraries (3 more were added in the 1995 ISO extension, making 18 total). C++ adds another 32 header files. To call yourself an expert C++ programmer you need to know C++ (the language) as well as the libraries.

Essential C++, Stanley Lippman
This book is to C++ what Learning Perl is to Perl. When working on a production at Dreamworks, Lippman needed to learn Perl. He found that the Learning Perl book was perfect. It told him just enough to get started programming in Perl without overloading him with details and complications. He felt that C++ needed a book like this one and that his 1300 page C++ Primer could not serve that purpose, so he wrote this book.
C++ Primer, Stanley Lippman
Lippman clearly knows C++ very well. This text is a comprehensive C++ text. It could not easily be used in a beginning programming class, but would be suitable in a following course. I'd be inclined to have either this book on my shelf as a C++ reference or ...
The C++ Programming Language, Special Edition, Bjarne Stroustrup
There are alot of bad C++ books out there. This one is good. I have found that this one contained the answers for many of the questions I had as I was (re)learning ANSI standard C++. It could not be used in an introductory course, but has been to me a valuable reference.
The C++ Standard Library: A Tutorial and Reference, Josuttis
This text is easy is an easy to read and pretty comprehensive description of the C++ standard libraries (parts that are C++ but not C). The key here is the "easy to read". This text can be used to learn the containers and algorithms, etc. not just serve as a reference.
The C++ Standard Template Library, Plauger, Stepanov, Lee, and Musser
It is not enough that C++ programmers know the C libraries, they also need to know the C++ Standard Libraries and the C++ Standard Template Libraries. This book is by Plaugher and the guys that wrote the STL. If they don't know it, nobody does. It is similar to the Standard C Library book discussed above, but deals with the STL. I don't feel as strongly about this text as the C version, but it is nice to have a comprehensive description of the ANSI STL.

Perl

Learning Perl, Schwartz and Christiansen
Easy to read book by a couple of people who know perl well. Great beginning Perl book.
Advanced Perl Programming, Sriram Srinivasan
After you've been through the Learning Perl book and programmed in Perl for a few months, get this book. I felt that I got my money's worth after reading the first 10 pages. Sriram knows perl and discusses important material related to object oriented programming in perl, perl internals, talking to a database, and many other topics. Every professional Perl programmer I've talked to feels the same way about this book. It is fantastic.