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!"