[comp.edu] Teaching an Object-Oriented Programming Course - Need Your Help

mariam@unocss.unomaha.edu (mariam) (09/10/90)

I will (also) be teaching a course in OO programming 
next spring. This will be a new course and will be 
offered as a seminar course. (The prerequisites would
be an introductory SE or simply a data structure course.)

I need some suggestions from you experts.

First, on the language to be used: Based on your
experience/knowledge, which OO language do you suggest?

Several languages are fairly popular: C++, SmallTalk,
Actor (not Hewitt's but the one from the Whitewater group).
But C++ seems to be the most popular, especially in the
industry. Am I right? 

Now, if I choose C++, where would I get a free/inexpensive
C++ compiler? (We only have SmallTalk and G++ languages.)

Second, on the textbook to be adopted: Again, based on
your experience, what book do you suggest? I have several
OOP and C++ books, but haven't used any one of them for
instruction, thus I need some assistance from you.

Many thanks in advance,

Regards...
mariam@unocss.unomaha.edu

PS. I will summarize and post the responses I get. 
However, feel free to post your response publicly.

pcg@cs.aber.ac.uk (Piercarlo Grandi) (09/14/90)

On 10 Sep 90 04:08:59 GMT, mariam@unocss.unomaha.edu (mariam) said:

[ incidentally, I have redirected followups to comp.object, and removed
comp.std.c++ from the cross post list, because it was wholly
inappropriate ]

mariam> First, on the language to be used: Based on your
mariam> experience/knowledge, which OO language do you suggest?

It depends on which languages your students already know -- I hope the
course would be an OO programming course, not an OO language course, so
minimizing language learning efforts would be important.

It depends on which machines you have and how much you can pay for a
compiler.

Let me give you some preferences: if you unlimited machine power, UNIX,
and loads of money, and are inclined towards classical things, get PARC
Place Smalltalk-80. If you have MACs, get Simula-67. If you have PCs,
get either Borland Turbo C++, or XScheme. If you have normal UNIX
workstations and want something cheap, get GNU C 2.0 and teach
Objective-C (preferably) or C++. If your students know Lisp, get T or
XScheme (preferably) or CLOS (ugh!).


mariam> Several languages are fairly popular: C++, SmallTalk,
mariam> Actor (not Hewitt's but the one from the Whitewater group).

I would hardly call Smalltalk or Actor "popular", especially in
industry; they are (small) niche languages, right or wrong it may be.

mariam> But C++ seems to be the most popular, especially in the
mariam> industry. Am I right? 

I would not recommend C++ unless the students are already well versed in
C; it also is a particular OO language, in that most other OO languages
are quite different. Smalltalk is classic, but hardly popular in
industry.

There are other possibilities; if your students are familiar with Lisp,
you could use T from Yale, which is an OO Scheme, and very elegant. Or
XScheme from Dave Betz, which has OO extensions to Scheme. Both are
free. You can also get CLOS, which is however I think too large and
difficult to teach as first OO language. But again, if your students are
accustomed to Common Lisp, nothing will overwhelm them.

Another good idea would be the prototypical OO language of them all,
Simula 67. There are many ideas in Simula 67 that have not appeared in
other mainstream languages.

Another possible choice would be Objective-C; it is far simpler than
C++, and more mainstream OO.

You could go for Eiffel. Eiffel is very OO, has a full design philosophy
behind it, and is fairly portable. I don't like some of the design
decisions though.

If you want something really elegant and exceedingly rare and snobbish,
get MDL, an OO language of its own, from MIT.

Another possibility would be Oberon or Modula-3, even if they are not
wholly OO.

mariam> Now, if I choose C++, where would I get a free/inexpensive
mariam> C++ compiler? (We only have SmallTalk and G++ languages.)

I think that if you have PCs the best bet is Borland's Turbo C++; to
Universities it is sold for a few dozen dollars per copy.

For Unix G++ cannot be beaten as to cost/benefit, or even benefit alone.

As to Smalltalk implementations, UNIX ones are fairly resource hungry;
there are a couple of slow but free ones from Berkeley and some UK
University, but you need to have a Xerox Smalltalk license. Otherwise
you can use PARC Place's very good one, but it is fairly expensive, even
at academic prices. For PCs you can get PARC place again (still
expensive), or get Digitalk's Smalltalk-V (good and cheap). There are
also some MAC implementations.

T can be had from Yale for free, and runs on most common Unix
workstations. XScheme is available for free from many servers, and is
portable to nearly everything. CLOS can be had for free with many Common
Lisp implementations; or you can get AKCL for Lisp and then load PCL
from Xerox into it (both are free). Or you can buy Allegro CL for MACs,
and it includes a CLOS port. Any CLOS implementation will require
*large* quantities of memory.

For Simula 67 there is a free high quality compiler for MACs and Ataris
(I do not know about PCs), from many servers.

For Objective C, you can get it from Stepstone at academic prices for
nearly any machine, or if you have NeXTs it is included, or you can wait
for GNU C/Objective-C/C++ 2.0, a compiler that will support all three
languages.

Eiffel implementations are only available from Eiffel, and they are
resource hungry and expensive.

MDL has been ported to many machines; I think it can be obtained fairly
easily from the MIT LCS, the Programming Research Group.

For Oberon you can have free Mac and Sun implementations. For Modula-3
there is a free compiler that emits C source for most UNIXes, available
from DEC.


Note: this list of possibilities is far from exhaustive. I don't think I
need to say that comments are welcome.
--
Piercarlo "Peter" Grandi           | ARPA: pcg%uk.ac.aber.cs@nsfnet-relay.ac.uk
Dept of CS, UCW Aberystwyth        | UUCP: ...!mcsun!ukc!aber-cs!pcg
Penglais, Aberystwyth SY23 3BZ, UK | INET: pcg@cs.aber.ac.uk