Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!caip!topaz!husc6!seismo!umcp-cs!smd From: smd@umcp-cs.UUCP (Stanley Dunn) Newsgroups: net.lang Subject: Re: Proofs &c (was Re: Trichotomous String Comparison Example) Message-ID: <2313@umcp-cs.UUCP> Date: Wed, 9-Jul-86 07:51:08 EDT Article-I.D.: umcp-cs.2313 Posted: Wed Jul 9 07:51:08 1986 Date-Received: Fri, 11-Jul-86 04:49:20 EDT References: <12221138454.23.PATTIS@WASHINGTON.ARPA> <2308@umcp-cs.UUCP> Reply-To: smd@maryland.UUCP (Stanley Dunn) Organization: University of Maryland, Dept. of Computer Sci. Lines: 66 In article <2308@umcp-cs.UUCP> chris@maryland.UUCP (Chris Torek) writes: > >[Incidentally, the introductory programming course at the University >of Maryland actually *does* avoid integers. For their first year, >students use something called `CF Pascal', in which the only legal >data types are characters and files. For the first semester course (CMSC 112) the students use CF Pascal. In the second semester course (CMSC 113) the students are exposed tothe full language in a disciplined fashion. > The students are supposed to >be able to prove their programs correct, and having few data types >(one) and `Turing-tape-like' stores (files) helps keep the proof >complexity down. They are able to prove their programs correct. But more importantly, they have learned how to solve problems rigorously. > I do not believe that these restrictions are >sensible beyond the stage of learning to write and prove algorithms, >and I am not even certain they are sensible there. It does provoke >novel solutions to old problems, however.] > I am sure that many others agree, however this is exactly the point of view that people have to change. Many students feel that CF Pascal is a "crutch" and that they should be allowed to use the full language. At least the students have an excuse in that they are young and inexperienced. The fact of the matter is that the opposite is true - everything beyond CF Pascal are merely shorthand notations for cumbersome operations in CF Pascal, and that if the programmer has mastered the concept of Procedural Abstraction there should be no conceptual difference. Learning a science is not learning all the details about the tools you are working with - that sort of training makes you a technician. To be a scientist or an engineer requires that you have a deeper level of understanding of the properties of the tools you are using to solve problems. Computer Science should be no different, and CF Pascal helps development the thought processes of the students (with appropriate exercises, of course). The projects you use have to be geared for CF Pascal without doing any arithmetic or random access manipulation. Two examples of projects I gave my students to write were an interpreter and a program for symbolic evaluaton of boolean expressions. There are many problems that are hard to solve because the concepts are difficult, and not because of CF Pascal. In fact, many of the projects I used were just character and string processing. This approach to teaching should not be condemmed without a thorough understanding of the material, after which you can give a mature, educated evaluation. Next week a short course is being offered here (Dept. of Computer Science, UMCP) for those interested in teaching Computer Science with the Mills' text and this structured approach (CF / D / O Pascal). Harlan Mills, Vic Basili, John Gannon, and myself will be going over the text, and relating personal experience from teaching the two courses CMSC 112 and CMSC 113 here.