Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!rutgers!labrea!rocky!lewis From: lewis@rocky.STANFORD.EDU (Bil Lewis) Newsgroups: comp.edu Subject: Re: first languages Message-ID: <522@rocky.STANFORD.EDU> Date: Wed, 26-Aug-87 02:22:38 EDT Article-I.D.: rocky.522 Posted: Wed Aug 26 02:22:38 1987 Date-Received: Thu, 27-Aug-87 07:08:07 EDT References: <405@ndsuvax.UUCP> <1010@argus.UUCP> <290@rruxa.UUCP> <1039@bsu-cs.UUCP> <2575@ames.arpa> Organization: Stanford University Computer Science Department Lines: 67 In-reply-to: lamaster@pioneer.arpa's message of 24 Aug 87 17:13:20 GMT Posting-Front-End: GNU Emacs 18.36.1 of Fri Feb 6 1987 on rocky (berkeley-unix) [My first entry to any usenet group... ] I have been teaching the Lisp course here at SU for the past year. It's been ``demoted'' to a course number of 022 (which puts it somewhere below ``Computers for Cretins''). I have had all sorts in this course, from sophmores to 4th year grads in CS, EE, Linguistics, Education, Philosophy, etc. Some of these kids have next to no programming experience, some have several years (some of these ``kids'' are also older than I am :-). I had the very good fortune to have some TI Explorers that were given to us & which weren't being used much (cf. donations to big name schools). With that as background, I would like to claim that I have found Lisp to be a superb first language for my students. I feel quite strongly that by having a language as clear and concise as Lisp, with such obvious semantics, the students' work is vastly reduced and the amount of learning is proportionally increased. A portion of this is due to the fact that there are no nasty little syntax bugs popping up when the program gets compiled. A portion of this is due to the fact that *everything* is right in front of the student. What was the value of that variable? Look at it! What happened to the contents of that array? It's still there. A portion is due to there being no core dumps and no debuggers which require the student to learn another new language at the same time. Most of it, however, is due to Lisp being so clean, syntatically & semantically, so that the student can really understand everything. **************** Well, that's some claim. Here's some supporting evidence: * All of the students could write significent recursive functions. * (Some of) the students could write the Y-combinator on the final. * All of them could write macros (only about 1/2 could deal with really significent ones, getting all the gensyms right). * Most of them could explain the implementation of lists, symbols, and arrays, show how the garbage collector worked, and support a case for optimizing out tail recursion. I consider this to show considerable knowledge of CS --- far more than I am aware of students showing in other introductory courses (I sure didn't know 1/4 of this after one quarter!). Sure, the students are pretty good here. I am a fantastic teacher too ;-) Having good machines doesn't hurt, but the real power is in the language. Once you really understand how something simple works, it's a hell of alot easier to figure out the hard stuff. -Bil (Does USENET know the smiley face convetions? Turn sideways and interpret as humor/irony :-) -- Yours sincerly, -Bil (aka Weird Bil)