Seeking a Solid Java Textbook? 93
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?"
Oxymorons (Score:5, Funny)
Re:Oxymorons (Score:2)
Re:Oxymorons (Score:2)
No, it isn't. But it's really hard to imagine a masters level student that isn't capable of learning java fast.
I assume what is wanted is something beyond Learn Idiotic Java Unleashed In 24 Hours Bootcamp.
Well, then we have different assumptions. I assumed he wanted to teach good programming using java as the language of choice, not that he wanted to make a class of java language
Re:Oxymorons (Score:2)
Re:Oxymorons (Score:2)
I was there 2 years ago... (Score:3, Interesting)
Thinking in Java (Score:5, Informative)
Re:Thinking in Java (Score:4, Informative)
Re:Thinking in Java (Score:2)
Maybe a book more directly focused on OOP, datastructures or programming practises would be a better choice. Preferrably accompanied by a Java textbook of the kind that Eckel provides.
Re:Thinking in Java (Score:2)
Was your experience with his texts, at least in terms of his OOP instruction, somehow different?
Re:Thinking in Java (Score:4, Informative)
I have plenty of Java books nearby and this is probably the most dogeared of the lot.
The title says it all, 'Thinking in Java' gets the reader in the right mindset to understand a topic and 'why' things are the way they are.
Re:Thinking in Java (Score:3, Informative)
Another vote for TIJ, but, what are you trying to achieve with this course?
Most responses here seem to be "teach 'em good OO". What is the goal of this course -- what are the students supposed to get out of it? Since they aren't CS/IS graduates ("no programming experience") I can only assume they either need to (a) change careers, or (b) use programming as a tool in their career.
In the case of (a) one may contend that knowledge of OO design is important, but also that an introductory course is far fro
Re:Thinking in Java (Score:2)
Re:Thinking in Java (Score:2)
I'll add my thumbs up to this discussion as well. I wasn't quite a non-programmer when I picked it up (I had been through Learning Perl, and parts of Programming Perl), but as I relative newcomer to the craft, I thought it was great.
Well (Score:2)
What I do like about the book is that the book do
SICP -- The "Bible" (Score:3, Interesting)
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!
Re:SICP -- The "Bible" (Score:3, Interesting)
FWIW, the course here at Cornell descended from SICP uses SML and no textbook.
BTW: TAOCP == The "Bible" && !SICP (Score:1)
As far as mapping that specific language to another language (say one that is in vogue), it sounds more like the role of a good programming language concepts/fundamentals class. In which case they should be teaching a student how to map any language to another.
Recursion is cool (and SICP is a lot of fun), except when it sucks ass or you need to do something real world that is optimized and may not have a gig of stac
Re:BTW: TAOCP == The "Bible" && !SICP (Score:2)
Re:BTW: TAOCP == The "Bible" && !SICP (Score:1)
Re:BTW: TAOCP == The "Bible" && !SICP (Score:2)
Given proper tail recursion [wikipedia.org] - which essentially converts recursion to iteration, and which Scheme, SICP's implementation language of choice, supports - you don't need a gig of stack...
Re:SICP -- The "Bible" (Score:2)
The syntax is simple. Four months should be more than enough. But even though you entirely understand the syntax of a language, it can take many years to become fully comfortable with the languages common libraries and programming idioms.
I've been developing full time in C++ for the past 8 years or so and I am still
Here are a few... (Score:1)
From reading the descriptions, some of the following may be too introductory... I'm assuming your students all have bachelor degrees in CS, and are picking up Java as a 3rd or 4th language...
http://computerscience.jbpub.com/languages/java/ [jbpub.com]
http://computerscience.jbpub.com/cs1/java/ [jbpub.com]
Re:Here are a few... (Score:2)
At the risk of being redundant, I'll re-iterate the AC comment that hasn't been modded up (in case you're browsing at +1):
What part of no programming experience didn't you understand?
In addition (Score:4, Informative)
Re:In addition (Score:1)
The diagrams are particularly good.
Re:In addition (Score:1)
Re:In addition (Score:4, Informative)
I used this book in my own first year CS java course. I think that it does quite a good job of teaching exactly how to program in Java and how to use its object oriented techniques and other tools like overloaded constructors and polymorphic programming to your advantage. It would probably be appropriate to the submitter's needs.
The thing to remember about Horton's book is that it is very specifically about how to program IN JAVA. It is not so great if you want to learn the things that CS is really about. It does not spend much time on algorithms or or the ever-important discrete structures. If you want to teach about those in java, I suggest you look up is Data Structures and Algorithms in Java by Goodrich and Tamassia. It assumes you know some java beforehand, and jumps right into some very good explanations of those things that CS really is about. I've used it and found it very informative and easy to understand.
it depends... (Score:2, Interesting)
If you are safely assuming that your students already know how to program (for example in C) and know about data structures, then Java becomes an ideal choice to introduce object-oriented programming. If
Re:it depends... (Score:1)
Ok... let's see here... (Score:3, Insightful)
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.
Re:Ok... let's see here... (Score:1)
as a fluent perl and c++ programmer, and a reasonable java programmer, i have to say perl has got to be way worse than java for solid design and object orientedness
Re:Ok... let's see here... (Score:2)
I prefer languages that allow you to shoot yourself (like Python) because they're willing to trust the programmer, but Perl has the distinction of helping you shoot yourself, which goes a little too far. Somewhere on the Wild Wild Web there's a great article that describes how dangerous Perl is for allowing to layer quick hack on top of quick hack, until one day you can't layer another hack on top and you basically have to throw it out and start anew, instead of encoura
Oh, whoops, sorry, missed part of your point! (Score:2)
I honestly don't know whether I'd consider Perl OO easier or harder then Java; Java sure did fight me, tooth and nail, where Perl doesn't quite fight me that much. On the other hand, Perl is so kooky that that has to count against it.
Re:Oh, whoops, sorry, missed part of your point! (Score:2)
regardless, thanks for the other reply, it was a good read
Re:Ok... let's see here... (Score:2)
If I enrolled and paid good money for a course entitled "Introductory Java Programming", I would be understandably pissed if the first thing I was told was "go and teach yourself Java by mid semester".
Re:Ok... let's see here... (Score:1)
Re:Ok... let's see here... (Score:1)
I can. Python is an otherwise great language, and it has a class keyword, but its OO implementation is highly obnoxious and far worse than Java.
Just go with the standards (Score:1, Insightful)
Re:Just go with the standards (Score:1)
OO Problem Solving Java x3 (Score:3, Informative)
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.
Re:OO Problem Solving Java x3 (Score:1)
I'm not familiar with L&L, but we were recommended Deitel&Deitel when I started undergrad CS 2 years ago. I thought it was an awful book and rely almost entirely on the API docs (published and online).
If you are intending to teach Java face to face, rather than just OOP and associa
Re:OO Problem Solving Java x3 (Score:1)
Yes, the book is a hog, and there's a whole lot of irrelevant (to an experienced developer) stuff, like the origins of computers and what not. But the book is excellent for self-learning types willing to study home without attending lectures or going to school. Any time someone asks me for a book to learn programming on their own, and they have never programmed before, I recommend D&D.
If you have been minimally exposed to programming, Deitel is a waste, mig
How about ... (Score:3, Informative)
Used by MIT in the class 6.170 Laboratory in Software Engineering [mit.edu], which is part of the Open Courseware offerings, so you can see the lecture notes and see what they do with it.
How about this book.... (Score:1, Funny)
book. (Score:1)
Beginning Java Objects (Score:4, Informative)
I recommend Beginning Java Objects: From Concepts to Code [amazon.com], 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
Comment removed (Score:5, Informative)
Re:Focus on OOP, not on Java (Score:3, Informative)
IMHO, the best book for presenting OOP principles is Object Design: Roles Responsibilities and Collaborations [amazon.com]. It presents most concepts in a language-neutral fashion.
Some books worthy of reading over and over ... (Score:2, Informative)
Core JAVA (Score:2, Informative)
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 th
Re:Core JAVA (Score:1)
Applets are good pedegogi (Score:1)
I can certainly understand keeping away from doing a Java-web-developement course when you really want to do a Java course. :-)
I would encourage you to consider using applets because they let you get a pretty graphic in 10 lines of code (which is encourageing to even grad students) and you can have them write a JDBC based client. The benefits of this progject are that it's real-world, it forces them to take the relational tables and populate logical objects, and they will lear a little about Java's dynam
Intro to programming using Java (Score:1)
It's what the University of Alberta has used for a couple of years now and it's one of the few text books that I never sold after the course was over.
Strater
None (Score:2)
Look... (Score:2)
For master students, picking up java should be trivial, and you should not spend time on teaching it to them. To avoid too many complaints, cover some introductory java book such as suns java tutorial in the first two weeks, and a
Ummmm... (Score:2)
Head First Java [the book you want] (Score:1, Informative)
See why Tim O'Reilly says, "This is the first really new approach to computer books that I've see
Re:Head First Java [the book you want] (Score:1)
programming.java (Score:1)
been there (Score:2)
At my university, one is required to take introductory programming as a physics graduate student. Usually this class is taught in C, but recently they switched over to Java. The class is taught as though no one knows anything about programming (of course, many of us did).
All I can say is...
For the love of God DON'T use java!! Please, please think about what you're doing! Java classes invariably fall into the
Re:been there (Score:2)
I just have to comment that this is nearly the EXACT phrase I've been using to describe AP Computer Science at my high school, which is supposed to be the BEST place for math and science in the district. Lesson One, actually assigned in the class, was all about parts of a computer...and the teacher DID briefly show us the "right" way to read from the keyboard, then dismissed the three or four lines of code required as a huge pain and told us about the Terminal I/O
Re:been there (Score:2)
As you appear to still be in high school, I feel honor bound to offer you some advice:
You will never learn as much in a class as you will on your own. Skip and test out of as many classes as you can (sounds like you might already be doin
Best. Book. Ever. (Score:2)
Re:Best. Book. Ever. (Score:1)
Second that. The book discusses serious software issues - things like hashing, concurrency and synchronisation, inheritance/composition as methods for code re-use, the use and handling of exceptions, all the stuff a working coder needs to be aware of - in the context of Java and its particular advantages and pitfalls. It will make students worry if they haven't considered these things before, and it will help them to consider them in future. It's a real gem.
Core Java (Score:1)
Deitel & Deitel (Score:2, Informative)
Make learning OOP your primary goal. (Score:2, Interesting)
A short answer to your request would be to get Learn to Program with Java [amazon.com] by John Smiley to teach the Java language and program construction in the easiest manner ever written. The method taught is very accessible for those who've never written a line of code. Have your students follow the instructions in Don't Fear The OOP [stanford.edu]
Java Software Solutions (Score:1)
Out of curiousity, what de
Several books (Score:1)
Hmmm Michigan ehhh.... (Score:1)
Go Bucks! (where the safe choice, Thinking in Java, is recommended)
What NOT to get... (Score:2, Informative)
Two possible books (Score:2)
I can personally recommend Java Software Solutions: Foundations of Program Design [amazon.com], by Lewis & Loftus. We used this textbook (the first edition, link above is the 3rd edition) in an introductory programming class, and it's very focused on program design first, Java second.
I will say, however, that a big part of what made the text successful in our class was the outstanding instructor, who gave a programming assignment every week, of his own design, rather than those from the book. Then again, I loane
Write your own (Score:1)
uhhh... Master's? (Score:2)
I might be impartial (Score:1)
My recommendation: POOP! (Score:2)
JAVA POOP is a pretty good book. It has the additional bonus of having a funny title.
-D
Re:My recommendation: POOP! (Score:2)
Seeking a Solid Java Textbook? (Score:1)
MIT Open Courseware (Score:1)
http://ocw.mit.edu/OcwWeb/Electrical-Engineerin