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?"
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.
..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.
I've taught Java for a year (undergraduate level though) when I was getting Master's degree, and have assembled a collection of books that publishers sent for evaluation. I think the one you would be pleased with is Object-Oriented Problem Solving with Java.
It's not a book about programming and hence it received one star on Amazon from people who bought it trying to learn Java from scratch while they would have been better served by Deitel&Deitel or Lewis&Loftus.
Chapter 1, for example, goes through "Designing good programs" and "Software life cycle", in Chapter 13 there is a whole section dedicated to threads, not just pure code samples to copy and paste, but discussion targeted towards high-level concepts.
Disclaimer: I have not used the book for any of my classes, just merely browsed it in my spare time.
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
Intelligence shared is intelligence squared.
I haven't read any other boooks, and I don't intend to. The Core JAVA books has imho excellent quality and explains stuff very well. They also give nice hints and ideas on how to structure your programs, which seems like a much better way than the c++ like approach I would have done.
They contains very simple language and information about the language, so anyone can understand it. They got lots of code examples and a small collection about intresting APIs after each part of text for the commands used in that part.
Head First Java is published by O'Reilly & Associates. You can more information at www.headfirstjava.com or read the reviews at amazon.com. The best part of this book is that it doesn't assume you understand programming and it spends a large amount of time developing your OOP skills. It uses simple (some times comical) examples with great exercises to help with the learning process. From the hfj website:
See why Tim O'Reilly says, "This is the first really new approach to computer books that I've seen in many years. I think it's going to revolutionize how programming and other complex topics are taught."
Hope this helps.
Have the greatest JAVA book I've come across. There's very little of this fumbling around in the dark with concepts as "what's abstraction?" and the like (even though all the high points of the language are hit - almost invisibly - in the text), and instead the book focuses on a more pragmatic approach that I found to be more of an "okay ... so you're a SMART chimp ... now let's take the language out and drive it around a bit", instead of a tome of terms.
Very good book, that. I still use it to check myself against their code for client/server configuarations (in both JAVA and C) and ensure that I'm writing code that's reasonable.
An Intorduction to Object Oriented Programming with Java by C. Thomas Wu. The book is almost decent, but leaves me wanting a lot more. Another minus is that the binding quickly deteriorates.