Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site ut-sally.UUCP Path: utzoo!linus!decvax!decwrl!pyramid!ut-sally!ark From: ark@ut-sally.UUCP (Arthur M. Keller) Newsgroups: net.lang.pascal,net.college Subject: Re: pascal ass intro. language Message-ID: <4253@ut-sally.UUCP> Date: Sun, 23-Feb-86 03:47:04 EST Article-I.D.: ut-sally.4253 Posted: Sun Feb 23 03:47:04 1986 Date-Received: Wed, 26-Feb-86 04:08:16 EST References: <192@bu-cs.UUCP> Reply-To: ark@sally.UUCP (Arthur M. Keller) Organization: U. Texas CS Dept., Austin, Texas Lines: 76 Xref: linus net.lang.pascal:476 net.college:1105 I have decided to step into the fray here. (1) The object of an introductory course that includes programming is to teach problem solving techniques using a computer. Teaching a programming language is a necessary vehicle for this (unless you wish only to use canned programs, and even there you have some sort of language). (2) There is the choice to teach only one programming language or to teach multiple ones. To me the major choices (of categories) are to teach a primitive language (Fortran or Cobol), an Algol-based language (C, Pascal, Modula-2, Ada), an interactive language (BASIC, APL), functional language (LISP, Scheme), other (Smalltalk, Logo). [Sorry if you don't like my taxonomy.] Traditionally, intro courses have switched from teaching primitive languages to Algol-based languages, with an occasional intermediate stage at PL/I (kind of Algol-like). Recent experimentation has been done in teaching Lisp or Lisp-dialects (Scheme). Most of the Logo and Basic teaching is done at earlier grade levels than college. Other than the college level, Pascal is mainly taught at the late High School level (with part of the reason for its use being the AP exam in CS). One argument is that teaching multiple language paradigms will give students a better feeling for what Computer Science is all about. A counterargument is that it may overwhelm the students, the students may not yet be ready to make the distinctions necessary when several languages are taught, and that little depth may be possible, especially in a quarter course. (3) Regardless of the choice of a single language or multiple languages (preferably with different paradigms), one of them is likely to be first. Of all the Algol-based languages, Pascal is currently the best introductory teaching language in my opinion. C suffers from lack of enforced discipline that is very useful for beginning programmers. Besides, C is advocated primarily by UNIX users, and the error message "Segment fault, core dumped" is not my idea of a user friendly error message that would help a novice programmer find the error in the program. I don't know anyone who seriously suggests teaching Ada as a first language (they should be punished by having to teach Ada to Cobol programmers). Modula-2 is a good "contender for the title" and may become the language of choice once (1) it is standardized including support modules, (2) it is as widely available as Pascal, and (3) there are enough Modula-2 based intro programming textbooks so that you can choose one using a teaching approach you agree with. Also note that once you have learned Pascal, it is relatively simple to learn another Algol-based language. Many advocates of Lisp as a first language argue that it facilitates teaching some more advanced topics, such as recursion, earlier than Algol-based languages. They also like the simplicity of the syntax and that programs and data are uniform (built out of the same list structures, if you will). There are several popular varieties of Lisp, somewhat mutually incompatible, and Lisp is not universally available, and using Lisp requires use of an interactive system. [While I believe that every student learning intro CS should be given sufficient access to an interactive computer system, the lack of available facilities at some institutions preclude this.] Perhaps Common Lisp will win out, or maybe it will be just one more variant of Lisp. There are also fewer intro textbooks on Lisp than on Pascal, but that will make the selection process that much easier (or perhaps that much more frustrating). I think that the jury on Lisp vs. Algol-based language (really Pascal) is still out. (4) My opinions? I'm glad you asked that question. I believe in teaching Pascal as a first programming language. Other language paradigms can be taught in a programming languages survey course. Of course, I have a vested interest; I am author of "A First Course in Computer Programming Using Pascal" (McGraw-Hill, 1982; second edition in progress). Arthur -- ------------------------------------------------------------------------------ Arpanet: ARK@SALLY.UTEXAS.EDU UUCP: {gatech,harvard,ihnp4,pyramid,siesmo}!ut-sally!ark