Brian Ziman's Reading List for Programmers

Contents

Introduction Top

In response to requests for "further reading", I have compiled some information that should be helpful for students, but continue to be useful long into their professional lives. I use all of these resources regularly. I will try to keep this information up to date, but you should always check to see if there are more recent versions available. Feel free to contact me if you would like recommendations for quality books and resources on other topics that aren't mentioned here.

Java Top

The documentation for the Java class library is available directly from Oracle (who recently purchased Sun) by doing a Google search for the class name, such as "java.util.LinkedList 6". You want to include the "6" so that you get the latest version of the documentation. The complete Java API specification can be reached directly at http://download.oracle.com/javase/6/docs/api/overview-summary.html.

There are a number of free books about Java on Oracle's web site that range from introductory material for beginners, to extremely detail technical papers. Of particular note are the Java Tutorials and the Java SE 6 Documentation. I learned program in Java using those tutorials and the book version of the API reference (which is no longer practical, because of the size of the modern API).

A good, concise book about Java that covers all of the basics and goes into a fair bit of detail is "Java in a Nutshell, 5th Edition" by David Flanagan from O'Reilly Publishing.

The definitive book is "The Java Programming Language, 4th Edition" by James Gosling, et al. The authors are among those who invented the language, and it is a complete (and massive) reference.

Another terrific book, covering Java specific design patterns that are very useful for Java software engineers, is "Effective Java, 2nd Edition" by Joshua Bloch.

One advanced topic that really does require more than just "figuring it out" is concurrency, and the book on concurrency in Java is "Java Concurrency in Practice" by Doug Lea, who personally wrote most of the concurrency code in the Java API, as well as Bloch, and several others.

For these Java books, I don't recommend getting an older edition, simply because these latest editions cover completely new language features that didn't exist in previous editions. These authors make their living building Java, not selling books, so you'll find them useful, affordable, and only updated when it's really necessary.

If you've been programming Java for a long time, and haven't had a chance to update your skills since JDK 1.4.2, you might want to bring yourself up to speed by reading through J2SE 5.0 New Features, which has links to documentation on such topics as generics, for-each loops, autoboxing, enums, varargs, annotations, garbage collector ergonomics, String formatting, Scanner, the new java.util.concurrent framework, and so on. If there's even one of those topics that you're not intimately familiar with, spend some time reading through the material on that page.

Theory Top

Theoretical topics such as linked lists, hash tables, Big O notation, and so on, are covered in remarkable detail on Wikipedia.

The definitive book on algorithms is "Introduction to Algorithms" by Cormen, Leiserson, Rivest, and Stein. That's the book that the brilliant people at Sun used when creating the Java implementations of all these common data structures. It is the reference for algorithms. But it's also really heavy on the math and theory. If you really feel like you need to know the material at the level it is covered here, you might want to consider graduate school in computer science.

Software Engineering Top

All software engineers should at least be familiar with the basics of UML, but if you want to go into depth, the authoritative guide by the creators of UML is "The Unified Modeling Language User Guide" by Grady Booch, et al.

While "Effective Java" is specific to Java, "Design Patterns: Elements of Reusable Object-Oriented Software" by Gamma, et al. (also known as The Gang of Four) is a whole book of rules on how to write good software, along with excellent explanations about why it should be written that way, and should be required reading for all professional programmers, regardless of language.


Top | Home | Contact
Copyright © 2010 Brian Ziman
Updated: Thursday, 8 December, 2011