Slashdot Mirror


Good Textbooks for Object Oriented Programming?

Captain_Frisk asks: "My buddy and I have recently received approval to teach a programming course at our Alma Mater. We have pretty much free reign over what we teach, so we've elected to teach 'An Introduction to Object Oriented Programming,' to fill a void at a school where the only programming languages taught are C and Matlab. Can anyone out there recommend some good books for the course, not just for the students, but for us to read as preparation material? We've never taught a class before, and as graduates of this school, we've never had any formal training in OOP. I read a few books at work a few years back, but I don't remember their names, nor did they strike me as particularly memorable. So far I've looked at An Introduction to Object-Oriented Programming and Object-Oriented Software Construction, 2nd Edition (a book reviewed at Slashdot 3 years ago), but have not invested in either."

3 of 38 comments (clear)

  1. Books and Languages by randombit · · Score: 2, Informative

    One book that I would really recommend is Design Patterns (to just about anyone doing program design, really). It's excellent. The Gang of Four (as the authors are usually refered to because nobody can ever remember all their names :P) did one or two other books on a simliar line ("More Design Patterns", I think?).

    Since you didn't say what kind of language you're going to use, and you mention the only stuff there is C and Matlab, I'll throw out some languages suggestions as well:

    It kind of depends on the experiences of the people you're teaching. If they already know C, C++, or Java, maybe doing the course in C++ or Java is the way to go. However, they may have too many preconcieved notions in those languages (like old C programmers moving to C++, and basically still writing C, ignoring the OO stuff when they can) to be effective object oriented programmers in those languages without some other experience.

    So you may want to look into something like Python. I can't think of any other major OO scripting languages (Perl doesn't really count too much), and ML/O'Caml/Lisp/Scheme aren't really OO langauges in that sense.

    Oh, maybe Smalltalk would work I don't know of any free implementations, hopefully there is in fact at least one good one. Objective-C is C plus Smalltalk-style OO and as it's built into GCC, it would be available for everyone, so that might be another option. Since it's much less complicated than C++ (I like C++ but even I think it's a huge language), it would be relatively easy to learn in short order.

    1. Re:Books and Languages by StandardDeviant · · Score: 3, Informative

      for a free smalltalk implementation, check out Squeak. But if they know C, throw Java at them. Free tools that work on most any platform, plenty of good books (c.f. Thinking in Java by Bruce Eckel, which you can read online in a variety of formats (scroll down some on that page)), and not a huge syntactic leap to get in the way of the OO concepts, yet enough of one that they can't just code "C in C++". I've always been fascinated by Obj-C but I've had little luck finding good intro material.

      HTH :-)

  2. Re:Depends on the level..... by pjdepasq · · Score: 4, Informative
    Ah, ok.

    Well, I've done a Java for juniors and seniors who already know OOP here at VT. In the past we have used the Core Java Volume 1 book, but that's not appropriate to your audience, since they don't already know OOP.

    Take a look at Java Software Solutions (Addison-Wesley, author=John Lewis), if you are looking for a book tied directly to a language that the students will be working with. (Shameless plug: John was my Master's advisor, and I contributed to the text). It's been very well received at the collegiate level and is well supported. Since your students know C, they may be able to skip a few intro chapters on programming, data types, etc... or at least get through them quickly.

    Deitel and Dietel's Java texts are also popular.

    If you are looking for only a discussion of OOP topics and not bound to a particular language, I can't be of too much help there, I've not perused any of those recently.

    One final point. Please consider attending SIGCSE (http://www.cs.cofc.edu/sigcse2002) in February. It's an invaluable resource for computer science instruction for both new (novice) and old (er, experienced) instructors. SIGCSE is a great place to make contacts, get help on related issues, check out the texts, etc....