Path: utzoo!dciem!nrcaer!sce!titan!rossj
From: rossj@titan.UUCP (Ross Judson)
Newsgroups: comp.lang.misc
Subject: Re: Which language to teach first?
Keywords: smalltalk first language teaching
Message-ID: <6774@titan.UUCP>
Date: 10 Aug 89 14:18:35 GMT
References: <169@enea.se>
Reply-To: rossj@cognos.UUCP (Ross Judson)
Organization: Cognos Inc., Ottawa, Canada
Lines: 56

I attend Carleton University in Ottawa, Ontario, Canada.  When I took the
introductory courses, they were taught using Pascal.  This has since changed
to Smalltalk, which I consider to be an excellent choice.  I may be TAing
this year, and it will be very interesting to see what kind of work is done
by students who are exposed to object oriented ideas before functional ones.

I believe the courses use Smalltalk V on 286Clones and/or some kind of early
Smalltalk on Macintosh.

I have never worked with Ada.  It appears to be an excellent production
language; that is quite likely its best use as well.  Trying to introduce
the concept of packages, declarations, concurrency, exception handling, et
cetera and the introductory level is foolish.  Remember, we are dealing with
students who have difficulty understanding the difference between
pass-by-reference and pass-by-value!

Pascal is not my favourite language, but it is reasonably easy to learn and
is traditional :-).  I find that problems arise because beginning Pascal
programmers think of everything in a concrete way.  They hack away at a
problem until it's done, thinking in terms of arrays and functions.  Very
rarely will a beginning programmer make use of some of the nicer features of
Pascal, such as sets and enumerated types, because they are forced by the
language to think in terms of storage, not concepts.

Smalltalk accomplishes several goals:

o	Ease of use and programming (advanced user interface).  The
	graphical environments of most Smalltalk systems pique student
	interest, and encourage exploration of the environment.  It is very
	easy for them to play with the system, figure out how to add
	classes, and do interesting things quickly.  They generally need
	less impetus and TA time to become familiar with the environment.

o	The teaching of reuse _early_.  The courses are designed so that
	as classes are developed, they are incorporated and specialized
	further into and by later assignments.  It is valuable training for
	future work.

o	Beginning Smalltalk programmers are isolated from the hard "machine
	realities".  They don't have to worry about storage, data types,
	garbage collection, or any of the other nonsense that their lives
	will be concerned with when they hit the real world :-).  They can
	focus on _concepts_, and think in _abstractions_.  Once they have
	that language doesn't matter.

o	Smalltalk is a simple, clean, and consistent language.  It also
	comes with lots of examples built-in.

There are probably some other interesting benefits that I can't think of
right now.  Some of this is assumption; I assume the faculty is planning the
courses with the same techniques used to plan the 2nd year courses.  I took
those courses, and for my classmates and I the benefits were very real.

-- 
uucp       - uunet!mitel!sce!cognos!rossj  |I guess I'm following my heart...
arpa/inter - rossj%cognos.uucp@uunet.uu.net|And that takes me a different path