Java How to Program: Early Objects Version (8th Edition)
by Harvey Deitel and Paul Deitel
Background: I am a PhD student in computer science, but I do theoretical research that rarely requires coding, so I haven’t programmed in years. Recently I decided to pick up java, which I last used in 2000; rather than taking a class, I decided to spend some time this summer working through this book. I have programmed in several languages in the past (most notably C++) so I am familiar with the basics of programming (OOP, control structures, etc) but as I have not used java in close to a decade, much of the language is totally new to me.
The book is easy to read and has been well-proofed. The topics are covered in depth without assuming that the reader is either an expert or stupid: everything that you need to know is covered, but not repeated over and over. A summary and quiz at the end of each chapter makes it simple to check that you understood all of the important points, and the optional GUI case studies allow the reader to immediately jump in to graphical programming, which is often much more interesting than just causing words to appear on the screen! Chapters are a reasonable length as well; time to complete will vary depending on whether you’re typing out and compiling the listed programs (you should) and doing the sample problems at the back of each chapter, but I’ve been spending 1-3 hours on each. Having just finished Chapter 10, I’ve learned quite a bit, particularly about features of the language which hadn’t yet been added the last time I used the language; the enhanced for loop, for example, is pretty cool! The book comes with a companion website that offers downloads of every program in the book, as well as an additional ten appendices that didn’t fit into this approximately 1500-page book.
The reason this is a 4.5 star review is there is one editing error that annoys me and makes the book a little harder to use. As each chapter involves writing a program and then modifying it, code is necessarily repeated; changes are highlighted in yellow to make it easier to find the places that need to be changed in your code. However, there are several places where the highlighting is incorrect (code that has changed is not highlighted, or code is highlighted without having been changed). It’s a minor issue and only takes a few minutes to figure out; otherwise I’ve had no problems. The book is definitely not perfect, but it’s the best programming book I’ve read so far.