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?"
Specifically, I would like to ground them in good Object Oriented principles,
Good idea; too many people get out of college even at the Masters/PhD level without really understanding OO. (Even if it's not the be-all, end-all technique it was initially promoted to be, it's still a darned useful way of organizing large programs.)
solid program design techniques,
Sounds like a plan.
and finally in the actual syntax of Java.
Whoops, you're using Java? How does that fit with the first two goals? I can't think of a language that makes good OO harder while still having a "class" keyword.
Oh well, guess you're stuck with it.
Alright, ignoring the potentially flamebait nature of the above (though I mean it quite seriously), if you can avoid it at all, I'd recommend not worrying about teaching syntax. Seriously. Speaking from my experiences at a Certain Other Large Michigan School, you should just be able to say at the beginning of the course, "Hey, we're going to do an assignment in the second half of this course that will be in Java. Know Java by then." and let that be the end of it; we did that in Software Engineering at the grad level and it worked fine.
Just throw them to the sharks; they'll manage.
If you were going to toss Prolog or a heavily functional language at them unexpectedly, that might be worth some in-class time, but in-class time is a scarce resource; it really should only be spent on important stuff either unobtainable, or significantly more difficult to obtain, outside of the class. Java syntax hardly qualifies.
Ya know, "Teach Yourself Java in 21 Days" or "Java for Dummies". I'm sure your students don't want to get bogged down in all sorts of cumbersome theory, but just real-world, practical skills that they'll be able to put to use right away. Thats what these books emphasize, so thats why I'm recommending them.