[comp.edu] models

chris@mimsy.UUCP (Chris Torek) (07/29/89)

In article <8514@batcomputer.tn.cornell.edu> lacey@batcomputer.tn.cornell.edu
(John Lacey) writes:
>P.S.   What about comp.lang.paradigms? ...

How about `comp.lang.models' instead?  Not only is it easier to type
(and spell), it is also the right word.  A newsgroup for examples in
particular computer languages does not seem very useful.
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163)
Domain:	chris@mimsy.umd.edu	Path:	uunet!mimsy!chris

tbc@hp-lsd.HP.COM (Tim Chambers) (07/31/89)

Having learned Lisp as my first language under the instruction of Sussman, I
agree with the points made by manis@grads.cs.ubc.ca.  The language should be
irrelevant.  I won't try to speak about the current MIT environment, but
during my enrollment (1980-84), one was hard-pressed to find any course that
taught a language.  I was immersed in the philosophy that the theoretical
material (data abstraction, automata, algorithm design, etc.)  should be
taught during the class and that programming languages should be given no more
attention by the instructor than was necessary to make it possible to
accomplish the lab work.  We were given a reference manual and sent off to do
the assignments.  Examples during class were limited to discussion about the
concepts, and Lisp syntax was freely used, but minimal attention paid to Lisp
semantics.

I do not understand what Mr. Manis implies by the following, though.

|There is, however, the non-major population, who clearly neither want
|nor need Abelson and Sussman. With this group, programming is clearly
|not the major issue, and Pascal is quite suitable.

If programming is *not* the major issue, why force them to study the theories
using Pascal?  If you want to teach abstract concepts, what better vehicle than
a language that requires thinking in terms of a few fundamental concepts --
atoms, lists (ordered sequences), and recursion?  Sussman stressed that we
were using Lisp because it was a simple, yet powerful language to practice the
concepts being taught.  Arrays, structures, vectors, complex numbers -- all
were introduced to us in their abstract form and then we practiced
manipulating the abstract types by representing them with lists.

I learned Pascal on-the-job during a summer internship after learning Lisp and
CLU in school.  The semester I returned, I confronted my software engineering
professor about why I had to learn CLU to do my labs instead of using an
"industrial" language like Pascal or C.  He reinforced the school's philosophy
that precious class time should not be wasted teaching language particulars;
rather, if we had learned a basis for software design, we could apply those
principles to *any* language we might encounter.  (Indeed, CLU was a "pet"
language of the department, but it was *tuned* for teaching good
object-oriented design techniques before Ada or, I believe, C++ and
Objective-C, were available.)  After five years in the "real world" I can
attest to the wisdom of that approach.  I have seen the merits of Pascal,
Gosling's Mock-lisp, C, Ada, Objective-C, C++, Smalltalk, Prolog, and assembly
language debated during my career.  My education allowed me to adapt to
whatever language my employer has required me apply.

Please, teach the concepts *first* with *minimal* attention to the language
representation.  Then introduce languages as *examples* (some better than
others, of course :-) of the concepts of data abstraction and algorithm
design.

manis@faculty.cs.ubc.ca (Vincent Manis) (08/02/89)

In article <7870002@hp-lsd.HP.COM> tbc@hp-lsd.HP.COM (Tim Chambers) writes:
>I do not understand what Mr. Manis implies by the following, though.
>|There is, however, the non-major population, who clearly neither want
>|nor need Abelson and Sussman. With this group, programming is clearly
>|not the major issue, and Pascal is quite suitable.
>If programming is *not* the major issue, why force them to study the theories
>using Pascal?  
Tim then points out that all of the Pascal concepts can be better taught
with Lisp.

Most non-major students will never, ever, write a program again (or will
use dBase or Hypercard or something). The issue is not so much to teach
them a particular language, or even a particular semantic base for a
language, as to give them something of a taste of what programming is.
Since it is not likely that they will understand much of the semantics,
the major goal is to have them get a grasp of what programming is, and
what major concepts such as conditionals and repetition are. If I were
to write a literacy book, I would no doubt use Scheme, but Pascal is as
suitable at that level. The book we're looking at happens to use Pascal.  

The fundamental point is that while I consider Scheme to be my language
of choice, I don't feel that that choice really matters to a group which
is extremely unlikely to pursue programming. Issues such as the quality
of the text, and the availability of instructors who can teach the
material, become much more significant.


____________  Vincent Manis                    | manis@cs.ubc.ca
___ \  _____  The Invisible City of Kitezh     | manis@cs.ubc.cdn
____ \  ____  Department of Computer Science   | manis%cs.ubc@relay.cs.net
___  /\  ___  University of British Columbia   | uunet!ubc-cs!manis
__  /  \  __  Vancouver, BC, Canada V6T 1W5    | (604) 228-2394
_  / __ \  _  "There is no law that vulgarity and literary excellence cannot
____________   coexist."               -- A. Trevor Hodge