Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site ubc-cs.UUCP Path: utzoo!utcsri!ubc-vision!ubc-cs!manis From: manis@ubc-cs.UUCP (Vince Manis) Newsgroups: net.lang.pascal,net.college Subject: Re: pascal ass intro. language Message-ID: <171@ubc-cs.UUCP> Date: Fri, 21-Feb-86 14:20:57 EST Article-I.D.: ubc-cs.171 Posted: Fri Feb 21 14:20:57 1986 Date-Received: Fri, 21-Feb-86 15:43:50 EST References: <109@polyob.UUCP> <247@mit-eddie.UUCP> Reply-To: manis@ubc-cs.UUCP (Vince Manis) Distribution: net Organization: UBC Department of Computer Science Lines: 40 Summary: Perhaps this discussion belongs in net.cse, but... It may be reasonable to teach introductory MIT students four languages, but our students have difficulty with one. At present, our first year sequence (two terms) covers Pascal and Intel 8080 assembly language (three weeks or so, for computer organisation concepts, rather than assembly language skill). Even that is really pushing it. As far as I can see, introductory programming courses teach almost nothing about program design, whether or not one spends the entire time teaching program design. The reality seems to be that students ignore all the stuff you want them to learn, and learn syntax instead. It's only once they've actually tried to write large programs by hacking, and failed, that they're ready to listen to our remarks on software design. If we teach four languages rather than one, all we end up doing is confusing them on syntax. Until this year, our first year sequence included a unit on Fortran, which had the effect of causing students to be unable to write Pascal on the final exam. One might argue that Fortran's semantics are too similar to those of Pascal, and that one should try a completely different language, such as Lisp or Prolog. Maybe so, but shouldn't one try to teach how to do something well before trying to teach completely different technologies? (Perhaps Lisp is the right introductory language; my objections are on aesthetic grounds, and therefore not terribly debatable.) Back to Pascal: this year I switched my second year data structures/program design course from Pascal to Modula-2. I've been very happy about the results. But I still believe that at present Pascal is the right introductory language, not primarily because of its merits (the only advantage of Pascal over Modula-2--for rank beginners--is the simpler I/O in Pascal), but because of its acceptance: * Pascal is the language used by the U.S. Advanced Placement program; * zillions of textbooks; * lots of very good implementations, including Turbo Pascal, IBM Pascal/VS, and DEC VAX Pascal. The average introductory student has no longterm commitment to computer science, so one ought to teach him/her a directly usable skill; that means teaching a language s/he has heard of.