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