Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site clyde.UUCP Path: utzoo!watmath!clyde!jona From: jona@clyde.UUCP (Jon Allingham) Newsgroups: net.college,net.cse Subject: Re: Should Computer Science be taught at the High School level? Message-ID: <685@clyde.UUCP> Date: Tue, 18-Dec-84 08:34:04 EST Article-I.D.: clyde.685 Posted: Tue Dec 18 08:34:04 1984 Date-Received: Wed, 19-Dec-84 00:17:28 EST References: <241@mss.UUCP> <705@ames.UUCP>, <598@utcsrgv.UUCP> Organization: AT&T Bell Laboratories Whippany NJ Lines: 69 Xref: watmath net.college:537 net.cse:263 > As for what should be taught in high school computer programming classes, > my 1st year prof who had to take a bunch of hacker types and turn us to > the path of structured programming had this to say in response to our > questions. > > "What do I think should be taught in high school? > hm.. Typing." > > He figured > that far more bad habits than good were introduced in high school, > and that untraining us was far harder than starting with a fresh class of > computer illiterates. I worked for most of my 3 (undergraduate) years in college as a TA/Lab Assistant for CS classes. I worked a lot with new students and the first few programming/data structures classes ( also with junior- and senior-level classes but that's not relevant) and found that most of the faculty and student assistants would much rather have an 'computer ignorant' freshman that you could teach, than a person who took some BASIC/FORTRAN or even Pascal in high school since most of them thought they already knew everything. Sure, most of them had little trouble doing the assignments which were oriented towards beginners, but they also didn't learn much. New students would try the structured techniques being shown and would learn, whereas many 'experienced' students would keep on coding the way they did in high school and not even open the book or go to class. You wouldn't believe how many goto's and if-then-else kludges they came up with to solve a problem that was supposed to have been done with a Pascal CASE statement. They just hadn't gone to class or really read the assignments. Obviously this doesn't hold true for every case. Nothing ever does. If computer science is going to be taught in high school ( and it will be, there's no way around it) then would should be taught is: 1) BASIC FAMILIARITY. A student should try some canned programs ( not just games though ) to learn about working with a computer. Having the student type them in from DETAILED instructions is a good way to start. 2) PROGRAMMING. Everyone wants to do something on their own. A course should concentrate on data structures and object-oriented design ( ie none of this BASIC stuff. ) a. Recommended languages: Pascal, Modula-2 ( I don't recommend C because I don't feel it is a good learning language. There are too many ways to 'degenerate' back to assembly in it. Maybe C++?) Maybe Forth ( I don't know much about it) or possibly Ratfor or M-77 (god forbid Fortran 5). Of these I think schools should start using Modula-2 because it almost forces modular design and clean interfaces. b. Techniques: Requiring students to make modifications to an existing, medium-large, WELL-structured program is good - why have them waste time on all the support routines that make up a program, all that can be learned later. Another good way is to have students write a program and modify it later. You can start with a small but significant ( that's the hard part, finding something ) program and add new routines etc. Stubbing in un-needed routines at the beginning also teaches a valuable testing technique. I can't think of anything else of the top of my head, so I'll leave it at this. -- Jon M. Allingham (201)386-3466 AT&T Bell Laboratories-WH "Beam me up Scotty, no intelligent life down here!"