Path: utzoo!utgpu!watmath!iuvax!uxc.cso.uiuc.edu!uxc.cso.uiuc.edu!m.cs.uiuc.edu!gillies
From: gillies@m.cs.uiuc.edu
Newsgroups: comp.edu
Subject: Re: Which language to teach first?
Message-ID: <4200022@m.cs.uiuc.edu>
Date: 10 Aug 89 05:17:00 GMT
References: <4218@portia.Stanford.EDU>
Lines: 69
Nf-ID: #R:portia.Stanford.EDU:4218:m.cs.uiuc.edu:4200022:000:3518
Nf-From: m.cs.uiuc.edu!gillies    Aug 10 00:17:00 1989


/* Written 12:02 pm  Aug  8, 1989 by tbc@hp-lsd.HP.COM in m.cs.uiuc.edu:comp.edu */
> |From gillies@p.cs.uiuc.edu Sat Aug  5 16:38:00 1989
> |................................................  Also, realize that
> |MIT is biased towards producing AI researchers.
> 
> I must record my disagreement with this statement.  Like gillies
> (whatever his or her real name is), I also got a degree from MIT.....
> [doubts MIT is geared towards producing AI graduates]

Now that several people have questioned me, and it's time to
elaborate.  Like nearly all MIT students who spend a small fortune on
their education, I kept all my course notes and assignemtns.  Here is
a sampling of the homework problems / labs (there are two assignments
per week in 6.001 -- a homework & a lab):

PS 1 -- prefix, predicting lisp evaluator, using "defun".  
PS 2 -- predicting lisp evaluator, box & pointer diagrams 
PS 3 -- change for $1, predicting recursion, list filter/transformation 
PS 4 -- association lists, semantic networks
PS 5 -- queues, triplets 
PS 6 -- control abstraction, lisp evaluator, free vars, evaluation
PS 7 -- passing functions around, closures, random nums, tape data structure
PS 9 -- making lisp evaluator codeable in assembly
LAB 2 -- set operations, sets as binary trees, 
LAB 3 -- ELIZA
LAB 4 -- varieties of graphical search (depth, breadth) 
LAB 5 -- Implementing a LISP evaluator 
Lab 6 -- queueing system event-based simulation 
Lab 8 -- How to implement MACSYMA
Lab 9 -- bubble sorting in ALGOL
Lab 10 -- implementing LISP structures in ALGOL
Quiz 1 -- basics, bacteria image processing, algebraic manip (MACSYMA)
Quiz 2 -- Bank accounts (closures), lisp evaluator
Quiz 3 -- using simulated LISP from ALGOL
final -- evaluator basics, box & pointer diagrams, implementing permutations,
	 converting a number to ascii, simulating recursion with stacks,
	 doing MAPCAR in ALGOL.

I have to laugh at the ALGOL part of this course.  Ever try to read
LISP written in ALGOL?  Let me tell you, octal i432 machine code is
probably more legible.  Apparently, these ALGOL programmers have a
serious fear of FOR/WHILE loops -- every piece of code is recursive!

Let me call your attention to the AI nature of PS4, PS9, LAB3, LAB4,
LAB5, LAB8, and all the perverse ALGOL assignments.  On the other
hand, problems that you might find in a "normal" intro to C.S. course
occurs in PS3, PS7, LAB2, LAB9, QUIZ2 (bank accounts), FINAL
(converting a number to ASCII).  In other words, more than half the
course was devoted to arguably AI-type problems.  Furthermore, good
documentation practices WERE NEVER EVEN MENTIONED IN 6.001.  This is
why I stated that MIT's intro course was geared towards producing AI
students.  It certainly has major holes compared to the courses at
other schools.

I think I said this, but it makes good sense to pick a language that
will be reused in upper level courses.  Clearly LISP is a great choice
for MIT, since one upper-level AI course is required, several other
AI-type course are "restricted electives", and students might do UROP
(undergrad research), or write their UG thesis in LISP.

MIT didn't have this good sense.  They tried to teach a compiler
course without requiring the students to know the implementation
language.  It's hard to learn 2 new languages and also compiler
technology in one semester!

Don Gillies, Dept. of Computer Science, University of Illinois
1304 W. Springfield, Urbana, Ill 61801      
ARPA: gillies@cs.uiuc.edu   UUCP: {uunet,harvard}!uiucdcs!gillies