Lambda the Ultimate

inactiveTopic Coplien: Teaching OO
started 11/17/2003; 11:06:56 AM - last post 11/19/2003; 6:50:38 AM
Ehud Lamm - Coplien: Teaching OO  blueArrow
11/17/2003; 11:06:56 AM (reads: 10418, responses: 9)
Coplien: Teaching OO
I found this via Python Daily-URL (which now has an RSS feed), and since I've been thinking recently about defning and teaching OO (I have a meeting about this Wednesday), I had to take a look.

Not a lot of new stuff in here, but I am pleased to see that in most respects Coplien's approach is similar to the one used in the course I run. ADTs and abstraction first, only than inheritance and polymorphism. Put the emphasis on interfaces early, and keep hammering it in.


Posted to OOP by Ehud Lamm on 11/17/03; 11:08:16 AM

Chris Rathman - Re: Coplien: Teaching OO  blueArrow
11/17/2003; 12:05:14 PM (reads: 512, responses: 1)
Let's see, the three pillars of OOP are:
  1. Encapsulation: Isn't this just a synonym for interfaces?
  2. Inheritance: Isn't this just a way to share structure and code in building interfaces?
  3. Polymorphism: Isn't this just a way to share the definition of interfaces?
So, yeah, interfaces and abstractions are probably the proper place to start.

But I don't know that I agree with the author that one should teach "objects" before one teaches "classes". That's like asking whether one should teach data structures prior to teaching programming.

Ehud Lamm - Re: Coplien: Teaching OO  blueArrow
11/17/2003; 1:10:45 PM (reads: 510, responses: 0)
Well, since I hate both concepts, I am not really the one to defend the "object before classes" notion. The way I see it, the point is to teach ADTs before inheritance. It seems to me that the buzzword compliant wording isn't meant to convey more information than contained in the wording I suggest.

Dominic Fox - Re: Coplien: Teaching OO  blueArrow
11/18/2003; 2:08:52 AM (reads: 423, responses: 2)

From the article:

The CS department is driven to a large degree by input from an industry board. That board conveys pressing industrial needs, and we respond. We add formal foundation courses to round out the collection of courses. So in the interest of giving students something practical and current, I knew that both Use Cases and CRC cards would figure strongly in the material.

Hear that strange, unearthly squeaking sound? That's E. W. Dijkstra, up there in computer science heaven, grinding his indestructible angel-teeth together.

Coplien's C++ book is very good, and I'd like to hear more about his ethical/methodological differences with academic computer science. Does he feel that "input from an industry board" should be a driving force behind the shaping of courses taught in CS departments? It's widely accepted - to a greater or lesser degree - as a pragmatic necessity; but I guess a lot of people still think of it as a necessary evil...?

Ehud Lamm - Re: Coplien: Teaching OO  blueArrow
11/18/2003; 2:21:09 AM (reads: 421, responses: 0)
My personal take? I don't think the theory vs. practice dichotomy makes sense in CS....

Ehud Lamm - Re: Coplien: Teaching OO  blueArrow
11/18/2003; 2:48:05 AM (reads: 419, responses: 0)
Somewhat relevant to your post is this interesting essay on Operations Research: The Future of Operational Research is Past by Russel Ackoff. It's not about CS but some of the factors, as well as the general feeling, are similar.

Isaac Gouy - Re: Coplien: Teaching OO  blueArrow
11/18/2003; 10:54:23 AM (reads: 357, responses: 0)
since I hate both concepts, I am not really the one to defend the "object before classes" notion
Aren't objects just variant records with function pointers ;-)

Real-life object-oriented systems, Soren Lauesen
Object-oriented systems in real life. Case study details and observations

Chris Rathman - Re: Coplien: Teaching OO  blueArrow
11/18/2003; 11:41:12 AM (reads: 346, responses: 1)
I don't think the theory vs. practice dichotomy makes sense in CS....
What's the old quote: "In theory, theory and practice are the same".

I take it you come from the theory side. Running and ducking for cover. :-)

Ehud Lamm - Re: Coplien: Teaching OO  blueArrow
11/18/2003; 12:46:13 PM (reads: 350, responses: 0)
Not really. On this one I am fairly isolated. People from theoretical CS love to boast that they haven't wrote a single line of code since the last course they took as undergraduates. I think this is wrong on so many levels that I can only stare at them in amazement when they make such claims.

The line you quoted is most often used by me when I want to criticize theoretical CS...

aaron - Re: Coplien: Teaching OO  blueArrow
11/19/2003; 6:50:38 AM (reads: 296, responses: 0)
"this is wrong on so many levels..."

I completely agree. Generally speaking, I find theoretical CS about as useful as theoretical carpentry. To do their job programmers need tools. Programming languages are just one of those tools and it is a classic mistake by the more theoretically inclined to focus exclusively on languages. In the every day world of programming, IDE’s (editors, debuggers, profilers, etc), GUI builders, and libraries are every bit as important as the core capabilities of a language. In fact it could be argued that they are of equal importance (though I am not sure that I would argue that).

For what it’s worth here is my ideal tool set: Common Lisp as the language, VisualWorks (Smalltalk) as the IDE, Flash MX for the GUI, and a set of libraries like Perl’s.

Cheers.