Slashdot Mirror


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?"

93 comments

  1. Oxymorons by acxr+is+wasted · · Score: 5, Funny

    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."
    1. Re:Oxymorons by Anonymous Coward · · Score: 0

      Yeah. This story sounds like a dupe.

      lolololololo!!!!11!111one~!

      To add something substantive, as previously mentioned, Bruce Eckel's website is an excellent place to start. Additionally, it's a good collection of info about other languages, too. The "Thinking in..." series also covers patterns, Python, and C++. I've got his "Hands On Java Seminar" CD, which I found to be a great addition to his TIJ book. I downloaded the book and used it in conjunction with the HOJ CD.

      Currently, our university uses Core Java 2, vol 1 and 2 for teaching Java beyond Lewis' Java Software Solutions.

    2. Re:Oxymorons by joto · · Score: 1

      Have you ever seen a good textbook without "introductory" or "introduction to" in the title? Basically, in academic subjects, if it isn't "introductory", it's research. Anything that's been solved before is "trivial".

    3. Re:Oxymorons by ameoba · · Score: 1

      It's probably for Business students; if they 'learn java' they'll be able to manage the entire programming/IT division.

      --
      my sig's at the bottom of the page.
    4. Re:Oxymorons by di0s · · Score: 1

      especially from a StudMuffin.

    5. Re:Oxymorons by Anonymous Coward · · Score: 0

      Is it really so hard to imagine a Masters level student who hasn't encountered Java before?

      I don't think it's that odd.

      I assume what is wanted is something beyond Learn Idiotic Java Unleashed In 24 Hours Bootcamp.

    6. Re:Oxymorons by joto · · Score: 1
      Is it really so hard to imagine a Masters level student who hasn't encountered Java before? I don't think it's that odd.

      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 lawyers (something that would definitely require prior exposure to the language anyway).

      Finally, even though you cover java in the first two weeks, doesn't mean that people should stop learning after that, but it should be more than enough to get up to speed.

  2. I was there 2 years ago... by Artie_Effim · · Score: 3, Interesting

    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 ;).

  3. Thinking in Java by skaffen42 · · Score: 4, Informative

    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.
    1. Re:Thinking in Java by EllF · · Score: 3, Informative

      Backing this up. Thinking in Java, available online, is the single best textbook for learning Java in existence. I'd *highly* reccomend getting the bound version, but look into the online edition to see if it meets your needs if you're reluctant to drop the dough.

      --
      We who were living are now dying
      With a little patience
    2. Re:Thinking in Java by rhild · · Score: 4, Informative

      Another thumbs up for 'Thinking in Java'. I can't think of a better book for someone intelligent, but new to programming. It covers lots of important concepts prior to introducing the language itself.

      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.

    3. Re:Thinking in Java by Twylite · · Score: 2, 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 from sufficient.

      In the case of (b) knowledge of design principles is not likely to be of significant and immediate use to your students. They would be better served by emphasising practical aspects of implementation in Java, focusing on solving particular problems, but being taught within a framework that implicitly demonstrates the benefits of good design. I'm imagining here students who need to create small programs for reporting, scientific and/or financial calculation, statistical analysis, etc. Although the software they write could benefit from good design, it is ultimately of little use to such people (if they really need an extensible robust framework/application, they'll hire someone with the proper expertise).

      So focus on the goals of the course, from the student's perspective, and not on just trying to drum good design principles into them.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    4. Re:Thinking in Java by pacc · · Score: 1

      I agree with you, though the question did not seem to be to learn everything about Java, but to learn to OOP programming in a good way.

      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.

    5. Re:Thinking in Java by EllF · · Score: 1
      I actually learned most of my OOP theory from Eckel, which is why I suggested it over a pure reference. I wouldn't reach for his C++ book if I just wanted to know what parameters a function took, but I would if I wanted a solid read on how classes interrelate with each other.

      Was your experience with his texts, at least in terms of his OOP instruction, somehow different?

      --
      We who were living are now dying
      With a little patience
    6. Re:Thinking in Java by FortKnox · · Score: 1

      Just posting to reiterate this suggestion. Teaches newbies OOP and Java, and experienced coders how to code in Java. Best coding book I ever read.

      --
      Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
    7. Re:Thinking in Java by bmj · · Score: 1

      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.

      --
      Whereof we cannot speak, thereof we must be silent. --Ludwig Wittgenstein
  4. Well by xenocide2 · · Score: 1

    I have a professor that is in the process of writing his own book for introduction to programming class. I didn't think that it was terribly enlightening, and focused on some GUI toys early on, but he appears to have remodelled the book some, perhaps in response to these sorts of complaints. We used it in our class for a couple of years, but it appears that they've moved on. Some of the other students really enjoyed it though, and it makes a handy reference.

    What I do like about the book is that the book doesn't focus on the java libraries. No fussing about the difference between a HashMap and HashSet, or what Runnable means.

    Since we're not using it right now, you'd probably be an easy sell as a royalty free test market. Shoot off an email to him if you think the book is workable.

    --
    I Browse at +4 Flamebait

    Open Source Sysadmin

  5. SICP -- The "Bible" by Lacertus · · Score: 3, Interesting

    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!

    1. Re:SICP -- The "Bible" by wcbarksdale · · Score: 2, Interesting
      Except that many of the ideas of SICP are poorly expressed (or even inexpressible) in more complicated, less expressive programming languages.

      FWIW, the course here at Cornell descended from SICP uses SML and no textbook.

    2. Re:SICP -- The "Bible" by Eponymous+Coward · · Score: 1

      It may only take four months to master the syntax of a language, but there is more to programming in a particular language than syntax. In this case, I'm thinking of C++ (my favorite language).

      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 learning a lot of new stuff. The language isn't standing still (although with C++, it sometimes seems that way) and every once in a while somebody like Alexandrescu comes along and just blows you away.

      And even when the language doesn't change (or changes slowly), what is considered as good practice evolves. Five years ago, the use of inheritance was everywhere. Now it seems that the common advice is to compose by default and use inheritance reluctantly (see Sutter's books for excellent arguments on this).

    3. Re: SICP -- The "Bible" by j.leidner · · Score: 0
      In fact I consider SICP so well written that I'd rather people learn Scheme first with SICP and then set out to learn about the so-called real world and the syntax of (insert-your-mainstream-language-here).
      If they remember three percent worth of the doctrine SICP teaches ("building abstractions, building abstractions, building abstractions, ..."), it will have been for the better.

      Funny comparison, TAOCP/SICP to Old/New Testament... I suppose Don Knuth doesn't transform you into stone if you can't solve your HM50-rated exercise; neither will SICP raise the dead, although good software design can certainly prevent the loss of many an innocent life...
      The allusion to the Bible reminds me that here is a link to the thoughts of Knuth on religion (he is a committed Christian), if you are interested.

      Jochen

      P.S. (warning, joke!):
      Q: How does a blind programmer tell whether his colleague is a BASIC loser or a Scheme poet when he uses his terminal?
      A: The SHIFT+8/9 keys are worn out... :-)

  6. Here are a few... by attaboy · · 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/
    http://computerscience.jbpub.com/cs1/java/

    --
    The facts have a liberal bias. --The Daily Show
    1. Re:Here are a few... by Anonymous Coward · · Score: 0

      What part of "no programming experience", made you think that java would be the students' third or fourth language?

    2. Re:Here are a few... by bmj · · Score: 1

      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?

      --
      Whereof we cannot speak, thereof we must be silent. --Ludwig Wittgenstein
  7. In addition by xagon7 · · Score: 3, Informative

    ..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.

    1. Re:In addition by neilmoore67 · · Score: 1

      I must agree with your opinion on Ivor Horton's book. Unlike some courses the author seems to keep the pace of learning virtually constant throughout, which may or may not be an advantage.

      The diagrams are particularly good.

      --
      You've probably noticed that people's noses get bigger as they get older. That's because old people are huge liars.
    2. Re:In addition by Jucius+Maximus · · Score: 3, Informative
      "..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 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.

    3. Re:In addition by GreggBert · · Score: 1

      Another thumbs up for "Beginning Java". For object orientation with a Java emphasis though, I'd very higly recommend "The Object Oriented Thought Process". It's not a very large book but it covers a lot very quickly with good, short examples and diagrams.

      --


      If you don't understand anything I post, please accept that I ate paste as a small boy...
  8. it depends... by DrEasy · · Score: 2, Interesting

    It all depends on what exactly you are teaching. You could be teaching an introduction to programming, or data structures and algorithms, or Object-Oriented programming, or network computing, or... Java would probably be suitable for either of the items above, and there are textbooks covering each of them.

    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 this is what you want to do, then "Object Oriented Software Development Using Java" by Xiaoping Jia is a very good bet. It introduces OO with UML, talks about patterns, and uses them to discuss the collections framework and Swing. Search for "Jia" on Amazon.com to learn more...

    --
    "In our tactical decisions, we are operating contrary to our strategic interest."
    1. Re:it depends... by wmspringer · · Score: 1

      uh...he specifically said that his students do not know how to program, so this is an intro to programming class..

  9. Ok... let's see here... by Jerf · · Score: 2, Insightful

    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.

    1. Re:Ok... let's see here... by toast0 · · Score: 1

      to respond to your trollish side....

      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

    2. Re:Ok... let's see here... by Jerf · · Score: 1

      Yep... don't recall saying otherwise.

      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 encouraging incremental refactoring along the way. ('Course, that summarizes it pretty well...)

      C++ would be better for a grad level OO design course, because at the grad level, the emphasis should be on power, not protecting the programmer from themselves, which Java does too much. Like the man says: " It's hard to live with none of: lexically scoped local functions; a macro system; and inlined functions." Java is too negative. (Improving, but only because it's attracted enough attention that certain things need be fixed for the language to move on and continue to appeal to the Heavy Hackers; witness how many projects compile directly to Java Bytecode, instead of Java itself. That's a sign.)

      I think a loosely typed language like Python would be even better for a grad-level OO class though, not because Python Is The Best Language Ever, but because for a grad class in OO-design, it's nice to use a language with enough power to rapidly and powerfully model an OO architecture, without getting in the way.

      Speaking for my own Software Engineering class, which used Java, we all did our models for our project, and then discovered that Java wasn't really capable of implementing our model. So our programs silently differed from the models, since we knew the prof couldn't read them all. (At the very least, we'd have needed a lot of classes to implement Patterns which weren't on the class diagram.) I strongly suspect this happens in the real world too often. I do know that if we'd been using Python, I could have stuck to the object model in the diagram.

      I think for educational purposes you need something that allows you to focus on what you're doing. I didn't post this before because if the title of the course is "An Introduction To Java", it's not relevant. But if I were in charge, I'd go Python, or maybe a type-inference-based OO language, so the students spend less time fighting the language and implementing the world's eight millionith Proxy class, and more time designing good OO designs.

    3. Re:Ok... let's see here... by Twylite · · Score: 1

      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".

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    4. Re:Ok... let's see here... by gothmog666 · · Score: 1

      i agree totaly this hapened to me this last year.. (i graduationg in coumputer science). the course was data structures. i had no experience in java, the professor just said: -- it will be nice if you learn java. all he had done about it is that in the last semester he had tought introduction to programing to the freshments so he gave the link of the website he done to the freshemnts. the website had some links, some example programs... and some links for some books. i think the best one was bruce eckel's thinking in java. just type thinking in java in google and youll find his website

      --
      I intend to live forever. So far, so good.
    5. Re:Ok... let's see here... by spike2131 · · Score: 1

      I can't think of a language that makes good OO harder while still having a "class" keyword.

      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.

      --
      SpyDock: Scientific Python in a Docker container
  10. Just go with the standards by Anonymous Coward · · Score: 1, Insightful

    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.

    1. Re:Just go with the standards by JoeParis · · Score: 1

      It's a masters-level course, not a class at a community college. It should be about theory. In fact, I would take it one step further. Use class time to focus solely on OO theory and concepts. Inform the students that they will be responsible for designing and coding a project that demonstrates these concepts in any language of their choice. The kicker is, they will have to defend their decision at the end of the term and will need to be able to explain how exactly their project adheres to the idea of OOP.

    2. Re:Just go with the standards by Anonymous Coward · · Score: 0

      Hey, read the original article. Its not a masters-level computer science course, else they would be expected to know how to program (and much more) already, and specific instruction in Java would be superfluous. It is being taught for one of two reasons: Either it is something tenuously related to the studies of the students, which they "ought to know" but probably will never need to use, in which case it really doesn't matter what they learn, or they are non-programmers who will need to, in their field, write programs. Either way theory is not important.

  11. OO Problem Solving Java x3 by prostoalex · · Score: 2, Informative

    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.

    1. Re:OO Problem Solving Java x3 by Ithika · · Score: 1
      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.
      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 associated techniques, then please get them to avoid this book like the plague! They won't need it, and IMHO it was an utter waste of nearly 40UKP.

      Ithika.

    2. Re:OO Problem Solving Java x3 by prostoalex · · Score: 1

      You were too smart for Deitel & Deitel:-)

      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, might pick up OReilly or something similar.

  12. How about ... by Anonymous Coward · · Score: 3, Informative
    How about Barbara Liskov. Program Development in Java: Abstraction, Specification, and Object-Oriented Design. Addison Wesley, 2001.

    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.

  13. How about this book.... by Anonymous Coward · · Score: 1, Funny

    "So you've decided to use .NET" by B. Gates

  14. book. by gears5665 · · Score: 1

    Programming Languages by Sebesta meets most of your requrements.

  15. Beginning Java Objects by jpkunst · · Score: 3, Informative

    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

  16. Focus on OOP, not on Java by Tal+Cohen · · Score: 4, Informative

    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
    1. Re:Focus on OOP, not on Java by curunir · · Score: 2, Informative

      I completely agree. Teach OOP concepts first, then students will have a much easier time groking Java when it's presented to them.

      IMHO, the best book for presenting OOP principles is Object Design: Roles Responsibilities and Collaborations. It presents most concepts in a language-neutral fashion.

      --
      "Don't blame me, I voted for Kodos!"
  17. Some books worthy of reading over and over ... by Bazouel · · Score: 2, Informative
    --
    Intelligence shared is intelligence squared.
  18. Core JAVA by aliquis · · Score: 2, Informative

    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.

    1. Re:Core JAVA by swankjesse · · Score: 1

      The CORE series rocks. It is an excellent resource for Java and "how do I .. . ." in Java. We used it at the University of Waterloo for our first year programming courses and we had much success!

  19. Java Precisely by Anonymous Coward · · Score: 0

    I can recommand Java Precisely for general Java Syntax. It helped me a lot learning the Syntax and it's pretty compact. Although you might need a book with more examples besides it.

  20. Applets are good pedegogi by basking2 · · 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 dynamic loading capabilities.

    Some caveats: Sockets can only talk from the client's computer to the webserver they got the Java applet from. Some one will make this mistake. :-) The teacher must REALLY be on the ball to cover that much material and not overload the learners. I've seen projects like this turn into disasters where students are left without any help by a professor who doesn't consider the "horizon streching" that's going one.

    Hope this is helpful. It is a large undertaking and it must be taylored for the caliber students you have. Then again, it's so enterprise-focused that they can't complain that your course is "just a theory course." ;-)

    --
    Sam
  21. Intro to programming using Java by straterpatrick · · Score: 1

    You might want to check out Introduction to Programming Using Java: An Object-Oriented Approach.
    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

    1. Re:Intro to programming using Java by Anonymous Coward · · Score: 0

      You know that there are probably thirty different books with that title, right?

      Might be helpful to name the authors, at least, if you can't be bothered to provide a publisher or amazon link.

  22. None by GiMP · · Score: 1

    I own two Java books and have seen others.. they suck. It isn't that the books aren't well written, it is that Sun's documentation is really good. Just stick with Sun's documentation and you should be fine, IMHO.

  23. Look... by joto · · Score: 1
    What you are looking for doesn't exist, ok? If you want to teach master students program design, give them a book on program design, regardless of language. Special java idioms can be covered by your own lecture notes or another textbook, but there are few that need to be taught.

    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 assume they know it by then. Better yet, cover only the parts of java you will use in those two weeks, and let the students choose their own favourite textbook.

  24. Ummmm... by Jellybob · · Score: 1

    Nescafe might sell them, although I'm still not sure how you plan to teach all of that from a book made of coffee.

  25. Head First Java [the book you want] by Anonymous Coward · · Score: 1, Informative

    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.

    1. Re:Head First Java [the book you want] by ezBSD · · Score: 1

      I'm an old C programmer. I have Bruce's book but could never quite get into it. I found the Head First Java book here on Slashdot and Java makes much more sense to me now. Besides it's actually fun to read. Unlike any other programming book I've ever read. It gets my vote.

  26. programming.java by holzp · · Score: 1

    programming.java is an actual intro textbook. The authors are top notch professors and the book is based around actual programming assignments which is IMHO the only way to learn a language. Unlike most other books it is specifically written for a college+ classroom environment (and has been translated into different human languages). If you look at the authors's other work you will see that its been backed by years of intro programming textbooks in other computer languages.

  27. been there by Goldsmith · · Score: 1

    Although it may be strange to hear of a graduate level introductory class, I have been there.

    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 "class about java, with some programming" category. If you truly are dealing with people who have no programming experiance, the very idea of a compiler will be foreign to them. When you have to explain what "include" does in the first week, you will lose half the class.

    Think about it! You have many more problems than which book to use. You're only option with java is to go at the pace the undergrad courses go... because that's what works with java, and then you have to ask yourself what you're doing teaching this class in the first place.

    My personal experiance with java was not too bad, but I had programming experiance. Every week, a dozen people with no experiance would live in the professors office seeking help, and that's just not the way you want to do things.

    1. Re:been there by EvilSporkMan · · Score: 1

      "class about java, with some programming"
      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 code provided by the book. The class is something else...@_@

      --
      -insert a witty something-
    2. Re:been there by Goldsmith · · Score: 1

      I've had a few classes on programming, and have absolutely hated all of them (that's part of the reason why I stayed away from computer science). At the same time, I've been able to teach myself a number of languages, and had a job in college doing computational physics.

      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 doing that) and find a mentor, or job which will teach you what you really want to know.

  28. Effective Java, Concurrent Programming in Java by Anonymous Coward · · Score: 0

    For a good "how to do java right" I would
    recommend Effective Java by Josh Bloch,
    and Concurrent Programming in Java by Doug Lea.

  29. Best. Book. Ever. by Dr.+Bent · · Score: 1

    "Effective Java" by Josh Bloch. The best Java book I've ever read.

    1. Re:Best. Book. Ever. by vbweenie · · 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.

      --
      Experience is a hard school, but fools will learn no other.
  30. Oh, whoops, sorry, missed part of your point! by Jerf · · Score: 1

    On re-reading my original post, I think I see what you were responding to. Note Perl does not have a "class" keyword; that's how bolted on the OO is. In fact I was thinking of Perl when I wrote that phrase. ;-)

    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.

    1. Re:Oh, whoops, sorry, missed part of your point! by toast0 · · Score: 1

      oops, i didn't remember (or more likely didn't notice) that perl doesn't have a class keyword.

      regardless, thanks for the other reply, it was a good read :)

  31. Core Java by jesboat · · Score: 1

    All the way.

  32. Deitel & Deitel by Niet3sche · · Score: 2, Informative

    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.

    1. Re:Deitel & Deitel by Anonymous Coward · · Score: 0

      i've taught a class using this book. and i felt the book was way too GUI for me. either because users get happy about seeing GUIs or because they didn't want to use the command prompt at all.

      i'd recommend this book somewhat. if everything you want to do is command line based expect to have some hassles.

  33. Make learning OOP your primary goal. by ninejaguar · · Score: 2, Interesting
    You'll have to face the fact that no single book contains the knowledge you wish your students to learn. So, you do what any great teacher does and take the best from various sources.

    A short answer to your request would be to get Learn to Program with Java 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! for fun and insight. Then, make the brilliant Teach Yourself Object Oriented Programming in 21 Days by Anthony Sintes the real goal of your course. The first 7 days covers OOP as you won't find in other books, then the following 7 days covers how to design/structure/test applications in OOP. The last 7 days is a fun project building an application using the OOP principles already taught. These two books should cover what your students need. If by chance you run out of time and they don't finish the OOP book, you should still be able to get them through the first 7 days of the material and still finish the Smiley book (which is necessary for the fundamentals). Your students can then continue to finish the Sintes book if they find Java/OOP is something they wish to pursue further.

    For students who require more instruction in programming fundamentals, you'll have to be more considerate. More consideration requires a longer answer to your request. You know that OOP is the most important aspect of learning this discipline, but you're stuck with a chicken and egg situation. How can one learn how to build solutions (algorithms/applications) to problems without knowing how to express those ideas first in a language's syntax and semantics? As you've said, your students are assumed to have no programming experience. Well, as a child, before you learned how to speak your mind, you first had to learn HOW to say things.

    I would first recommend giving your students a crash course in syntax and semantics. Don't worry if they don't know what to DO with the syntax yet. They first need to become familiar with the alphabet and sentence structures of the language before they can learn how to express their ideas in that language. I'm going to diverge from the rest of the slashdot crowd here by recommending that you use a CBT (Computer Based Training) for this step. It's the quickest way to your goal (about 8-20 hours of computer time) and the interactivity will keep their attention even though the material is very dry (in contrast to the Smiley book). They can run the CBT over and over again until the message of language's rules sink in. This will be most effective with your guidance in filling in the missing information (CBT text is purposely kept terse in order to maximize retention and in order not to lose the user's attention). Use CBTs as homework, or in conjunction with other homework. There are various worthwhile CBTs out there, Smartforce/Smartcertify's or Netg's first module on Java should suffice. Or, Joe Grip's whole set of Java instruction (about 10 hours of computer time, though they claim 5).

    If your students really are beginners, I'd even encourage getting a CBT on not just syntax, but on basic programming concepts (iteration, selection, sequence, algorithms...etc). Smartforce/Smartcertify has something on that called Programming Fundamentals or you can get a copy of COMPTONS PROGRAMMING MADE EASY (though you'll need to ignore some minor bugs, not that textb

  34. Java Software Solutions by portscan · · Score: 1

    I learned from Lewis & Loftus' Java Software Solutions and found it quite nice. It teaches Java, but does not focus on applets. It has plenty of good information (covering sytax, classes/objects, inheritence, string processing, exceptions, I/O, software engineering, Swing GUIs, and some applet stuff), not to mention OOP design guidelines, etc. The problems were not so interesting, but the prof. always made his own, which I suggest you do as well, just to keep things lively.

    Out of curiousity, what department are you teaching in? Pretty strange for grad students who have a need for programming in their field to have no experience whatsoever.

    1. Re:Java Software Solutions by Anonymous Coward · · Score: 0

      i used the same book (well...maybe a differant version...we had version 3, and i think version 4 just came out...which is why i couldnt sell mine back for anyhting....) in a class i had to took b/c i was a transfer, and the new school wouldnt accept my credit (the old school used a differant numbering scheme for the classes). while i allready knew the scope of the course, i thought the book was layed out pretty well, including grouping all the gui sets together at the end of the chapter, making it easy to skip them if you are jsut teaching OO programming, and not worrying about the graphical front end. my version also came with a cd that had jGRASP (java ide), the jdk, and the java api. while most of the ppl in the class didnt need to get it off the cd, if you are working with ppl who have done little/no programming work before, getting everyone on the same page to start out might be helpful.

  35. Several books by swelling · · Score: 1

    I assume your students already will know how to program and want to learn the syntax and spirit of Java. For the syntax side of things, the first few chapters of the O'Reilly Java in a Nutshell will suffice, although the rest of the books is largely a recapitulation of the API documentation. This should be coupled with Bloch's excellent Effective Java for the "best practices" thing in that area. For understanding the spirit of Java and the best design principles, I have found that Coad's Java Design incerdibly insightful. These are definitely keeper books.

  36. Hmmm Michigan ehhh.... by brian0x00FF · · Score: 1

    I'd recommend "Mr. Bunny's Big Cup o' Java". It's a short book and it has funny pictures. What more could a grad student at the U of M need?

    Go Bucks! (where the safe choice, Thinking in Java, is recommended)

  37. What NOT to get... by jabberjaw · · Score: 2, Informative

    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.

  38. PLT Scheme by Anonymous Coward · · Score: 0

    It's better.

  39. Two possible books by Alderete · · Score: 1

    I can personally recommend Java Software Solutions: Foundations of Program Design , 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 loaned my non-technical boss the book, to supplement her readings for the Java class she was taking, and she found it much more helpful than the text assigned by the instructor. In fact, she still hasn't returned it...

    Another possibility would be Objects First with Java: A Practical Introduction Using BlueJ . BlueJ is an IDE specifically designed for the teaching of object-oriented programming, using Java. If you go to the BlueJ web site, you can learn more about the IDE (which is freely downloadable) and the pedagogical philosophies behind it.

    I should say, I have not had personal experience with this text, just that it sounds like it might fit your requirements fairly well.

  40. Write your own by Ed+Thomson · · Score: 1

    Have you considered writing your own book?

  41. BTW: TAOCP == The "Bible" && !SICP by vt0asta · · Score: 1

    I believe Berkeley and MIT still proudly use SICP in their teaching for a CS course or two.

    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 stack to solve a particular solution.

    And, ofcourse, Knuth's TAOCP is the real Bible. I might grudgingly call TAOCP the old testament, and the SICP the new testament, but let's face it. Knuth has his shit together, when it comes to explaining CS.

    --
    No.
    1. Re:BTW: TAOCP == The "Bible" && !SICP by Eponymous+Coward · · Score: 1

      I have the first three volumes of TAOCP on my shelf and they are rarely consulted. To recommend their use in an intro to anything course is nuts. They just are not very accessible. As a reference, they are fantastic, but I probably woulnd't have taken many CS courses if they were taught primarily from Knuth's books.

    2. Re:BTW: TAOCP == The "Bible" && !SICP by vt0asta · · Score: 1

      I actually read my TAOCP books while I'm in the can, or when I am bored and want inspiration, and I am impatiently waiting for the 4th.

      --
      No.
    3. Re:BTW: TAOCP == The "Bible" && !SICP by vbweenie · · Score: 1
      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 stack to solve a particular solution.

      Given proper tail recursion - which essentially converts recursion to iteration, and which Scheme, SICP's implementation language of choice, supports - you don't need a gig of stack...

      --
      Experience is a hard school, but fools will learn no other.
  42. uhhh... Master's? by euxneks · · Score: 1

    "Master's level Introductory Java Programming class"

    ...is that a joke?

    --
    in girum imus nocte et consumimur igni
  43. I might be impartial by Avatar889 · · Score: 1

    I may be impartial, because my teacher wrote this book. But I was a first year undergrad at RIT and this book reall clarified many things for me. And it's recent, having only been written about a year ago. And most of all, it's focus is more on the software development and thinking that on implementation. Modern Software Development Using JAVA Tymann and Schneider IBSN: 0-534-38449-8

    --
    Nullum magnum ingenium sine mixtura dementia (There is no great genius without a mixture of madness) - Aristotle
  44. My recommendation: POOP! by dbretton · · Score: 1

    JAVA Principles of Object Oriented Programming, or
    JAVA POOP is a pretty good book. It has the additional bonus of having a funny title.

    -D

  45. Re:My recommendation: POOP! by dbretton · · Score: 1

    Don't believe me? Here's the URL

  46. Seeking a Solid Java Textbook? by shepd · · Score: 1

    Have you tried hardcover yet?

    --
    If you could be told what you can see or read, then it follows that you could be told what to say or think - BoC
  47. MIT Open Courseware by twocents · · Score: 1

    Be sure to check out the this course, which focuses on modular system design.

    http://ocw.mit.edu/OcwWeb/Electrical-Engineering -a nd-Computer-Science/6-170Laboratory-in-Software-En gineeringFall2001/CourseHome/index.htm