Seeking a Solid Java Textbook?
StudMuffin asks: "I am teaching a Master's level Introductory Java Programming class, at the University of Michigan in January, and am on the hunt for a solid Java textbook. This class is aimed at grad students (who obviously have a bachelors degree, so they are assumed to be able to think on their own) with no programming experience. Specifically, I would like to ground them in good Object Oriented principles, solid program design techniques, and finally in the actual syntax of Java. I would rather think of this as a 'How to program well' class that happens to use Java as the language over a 'Java class' that happens to cover programming. I would like to stay away from the applet heavy books that I tend to find, focusing instead on the topics above. Any ideas?"
I never thought I'd hear the phrase "Master's level Introductory."
"Come on, let's go drink till we can't feel feelings anymore."
and while I cannot single out a textbook for you, I urge you to spend 3 classes on UML. Understanding an object and it's methods really helped me, the language was secondary to that; hell, I just used the API ;).
Check out Bruce Eckel's Thinking in Java. Not really a textbook in the classic sense, but sounds like what you need. Also available in an HTML version.
People couldn't type. We realized: Death would eventually take care of this.
I always wished I would come across an instructor who took "Structure and Interpretation of Computer Programs (abelson, Sussman & Sussman [see here SICP]) and mappend the fundamental theories presented therein to whatever language was currently invogue during that class/age.
Mere learning of language, for the fit of mind, is a simplicity - you're talking maybe 4 months at the outside to learn the syntax of $x language, thru and thru. However, with the ideas presented in SICP, you can accomplish nearly any theoretical CS task. The implementation (though fun) is the easy part.
I might recommend your assigning sections apropos to your course from the book as homework; in class, project the particular Java syntax upon those principals presented in the text.
A most rewarding class would result, I think!
..Thinking In Java IS a great book, but I also think Ivor Horton's "Beginning Java" is another perfectly suited book. There is a 1.4 edition out now. I simply cannot praise "Beginning Java" highly enough, it is the book I used to teach myself. Sometimes he is very verbose, but he certaintly gets the points across.
Used by MIT in the class 6.170 Laboratory in Software Engineering, which is part of the Open Courseware offerings, so you can see the lecture notes and see what they do with it.
I recommend Beginning Java Objects: From Concepts to Code, by Jacquie Barker. It looks at object-oriented thinking and design first, and code second. (if I remember correctly, the first part of the book only uses pseudo-code).
JP
Like other said before me, if the point is teaching Java, there's no better book than Bruce Eckle's "Thinking in Java", which is available electronically from Eckle's website. (The 3rd edition is new, I haven't read it specifically. My opinion is based on previous editions.)
I suggest, however, focusing on OOP, rather than on Java. A programmer who groks the fundametal concepts of OOP will have a relatively simple time adapting to the specific tidbits of Java. For this purpose, the best teaching language is Eiffel, and the best book is Object-Oriented Software Construction by Bertrand Meyer.
- Tal Cohen