Article View: net.lang.pascal
Article #246Re: pascal ass intro. language
From: Arthur M. Keller
Date: Sun, 23 Feb 1986 08:47
Date: Sun, 23 Feb 1986 08:47
76 lines
4925 bytes
4925 bytes
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
Technical Details
Message-ID:
<4253@ut-sally.UUCP>Path:
arc1-ca.pugleaf.net!utzoo!linus!decvax!decwrl!pyramid!ut-sally!arkReferences:
<192@bu-cs.UUCP>Show Full Headers
Complete Article Headers
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: arc1-ca.pugleaf.net!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