[comp.lang.misc] Teaching OOP to Beginners

jeffmc@tekecs.UUCP (01/22/87)

Some thoughts on the learning of OOP. Note, I am an advocate!

I wanted to pass on some of our experience here at Tektronix with respect
to the teaching of Smalltalk. We have been teaching beginning and advanced
Smalltalk classes for nearly two years and have taught over 200 professionals
the language. Please note that we emphasis the teaching of the use of the
language, not the the why-it-is-so-great of Smalltalk altho we can't help
ourselves, a lot of that comes out. We are also not very interested in all
the theoretical points about completeness, ability to solve every problem,
etc., since we teach to learn the language as it is and use it as it is.

We find that three areas must be covered in the teaching of Smalltalk:
1) Object Oriented Programming;
2) Smalltalk syntax; and
3) Smalltalk environment.

OOP as a design approach is not easy to learn for most professionals. There
appears to be two classes of students: i) Makes great sense, obvious, just
give me some practice; and ii) Why, why, why, I can do it better in C, Lisp,
FORTRAN, etc. As someone mentioned, a religious issue. I do believe it is
a paradigm shift since it creates such a strong response. The shift is that
in OOP, especially as demonstrated by Smalltalk, the user (programmer) looks
at the problem from the point of view of the problem not the point of view
of the computer. Objects seem to be a way of viewing the world that is close
to how a human thinks about things for a large class of problems. (Note that
I will never claim that ST is the 'last' programming language. Such a beast
does not exist!) We have found that the more experienced the professional is
the stronger the reaction, one way or the other. We have also noted that
beginners with little or no CS background may take longer to get started in
the language but will almost always be 'better' OOP programmers after one
week!?

The ST syntax seems to be very straight-forward for folks to learn. It is
really very simple and very consistant.

The ST environment is second most difficult part of learning ST. Most of this
is just because there is so much there. ST contains over 200 classes (data
types) and over 5000 methods (procedures). Learning these is a long term
project. Just learning how to handle a mouse and a multi-window (modeless)
system also takes time. Most folks love the working environment. A common
comment is that the programmer does not want to go back to the old way
of doing things(edit-compile-link). Personally I have been programming for
over 24 years and I won't go back unless forced to.

People learning Smalltalk get frustrated by the magnitude of the changes in
their thought processes. They also love it. People laugh, swear and do more
is less time than they thought possible.

The dangers of learning ST are primarily in the area of focus. Because the
system is so open it is very easy to 'get lost' exploring. This helps the
learning by exposure but it makes it easy to get sidetracked. There is also
a tendency to start coding too early. This problem is less severe in ST than
other languages since any work that is done can be modified with little
effort.

Another thing we have noticed is that after a reasonable amount of time
programmers begin to recognize 'good' ST style. The environment allows for
easy modification and we find people renaming methods/classes to closely
reflect their intent. This fine tuning, usually a luxury in programming, is
done early and makes for code that is much easier to understand and 
maintain.

I am more than happy to talk to folks about our experience in more detail.

Jeff McKenna (503) 685-2943      jeffmc.tekecs@tektronix.com