Xref: utzoo comp.edu:2364 comp.lang.misc:3180 Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!iuvax!mailrus!tut.cis.ohio-state.edu!bloom-beacon!athena.mit.edu!tka4092 From: tka4092@athena.mit.edu (Terry Alkasab) Newsgroups: comp.edu,comp.lang.misc Subject: Re: Which language to teach first? Message-ID: <13158@bloom-beacon.MIT.EDU> Date: 31 Jul 89 12:34:05 GMT References: <8514@batcomputer.tn.cornell.edu> Sender: daemon@bloom-beacon.MIT.EDU Reply-To: tka4092@athena.mit.edu (Terry Alkasab) Organization: Massachusetts Institute of Technology Lines: 62 In article <8514@batcomputer.tn.cornell.edu> lacey@tcgould.tn.cornell.edu (John Lacey) writes: >My school is currently using an old VAX (11/750) and VAX Pascal in its >CS courses. In the last 2 years, one of the professors (the best one >:-) ) has offered a course using Abelson & Sussman^2 as the text, with >TI's PC Scheme on 8088/MS-DOS machines. This course, however, is offered >as an upper level elective. > >At this years SIGCSE course, there was a talk about using Lisp, and in >particular Scheme, as a first programming language, that is, in the >CS1 and CS2 courses. > >What say all of you? > I just finished my freshman year at MIT, and though I am not a Computer Science major, I took the first class in the Computer Science sequence (6.001: Structure and Interpretation of Computer Programs, taught by Hal Abelson :-)!!). Many freshmen do; perhaps half the class in non-majors (there are perhaps a couple hundred in the class.) A *huge* percentage of the class already had programming experience (in whatever language: BASIC, Pascal, C, or what have you) and thus were not learning *programming* per se, but programming *theory*. As an interesting note, on the first day, the professor asked how many students had no previous programming experience. When a smattering of the class raised its hand, the professor reassured them saying that having no experience might prove beneficial, since learning the stuff he was about to teach would require many of their classmates to unlearn stuff they had long since learned. This was supported by a friend of mine who had problems with the class at first because she said she was trying to translate everything she did into BASIC. Naturally, the class used Ableson & Sussman, and it was quite an interesting experience. Many of the concepts I was asked to deal with, many of (what I understand to be) the important concepts in computer science were introduced in a deft manner through the use of Scheme. I could probably translate these ideas into use in other languages (in fact, I do on a daily basis), but trying to introduce them in, say, Pascal...I think it would have been a whole lot harder. Further, Scheme is a whose syntax is quite simple, and is *very* easy to pick up. The idea behind the class was *not* "Let's learn *another* programming language!" but "Let's learn computer science." And if a language is chosen which requires more attention than the concepts it is meant to introduce, then the entire purpose of the exercise is being defeated. My conclusion: as an introduction to computers, Scheme has nothing which immediately recommends itself, IMHO. However, as an introduction to *computer science*, Scheme worked extremely well in my case. (Truth to tell, I kind of like the language. Lots of fun stuff you can do!) --Terry "Know thyself." --Socrates "No thyself." --Zen's answer to Socrates DISCLAIMER: If MIT doesn't like what I say, it's their own damn fault for letting me have an opinion. Terry "Dweebie" Alkasab