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