[net.cse] Should Computer Science be taught at the High School level?

jpj@mss.UUCP (J. P. Jenal) (12/14/84)

Greetings - Mayfield has been teaching Computer Science as an elective for
three years with Advanced Placement Computer Science being offered for the
first time this year.  The present Introduction to Computer Science course
is a fairly broad based introduction to the *science* of Computer Science
and has a significant emphasis on structured programming using Pascal.  
We are now considering making a Computer course of some sort a *required*,
1 semester class.

My question to the net readership is what should the content of a required
course be?  If you are a college educator, what information do you want
incoming Freshmen to possess regarding computers?  Not just students in CS
but *all* of your incoming students.  Do potential English majors really
gain something by learning how to code Pascal?  Or would they be better
served learning word-processing and spread sheets?

Thanks for your thoughts - I look forward to some stimulating discussions.

Cheers...

	Jim Jenal		(aka ...!scgvaxd!mss!jpj)
	Mayfield Senior School	( "  ...!ihnp4!mss!jpj)

eugene@ames.UUCP (Eugene Miya) (12/16/84)

> 
> My question to the net readership is what should the content of a required
> course be?  If you are a college educator, what information do you want
> incoming Freshmen to possess regarding computers?  Not just students in CS
> but *all* of your incoming students.  Do potential English majors really
> gain something by learning how to code Pascal?  Or would they be better
> served learning word-processing and spread sheets?

Pasadena throws an excellent doo dah parade.

<obvious flame>
This question can be extrapolated to experience I had after taking Calculus
in HS and having it again in college.  There is going to be some degree
of repetition in anything you teach them.  The skill they need in no
particular order (except #1) are:

1) communication skills {English and perhaps one foreign language} are
	important.  I would also like to include thinking logically
2) some discrete math
3) exposure to interaction, I/O, modularity, parallelism
4) exposure to structuring ideas and data
5) exposure to data communications
6) computing ethics [in light of recent developments]
7) an undertanding that many vastly different languages and systems
	exist, and that computing is becoming a multi-lingual affair

English majors would best be served learning word processing and things like
the Writer's Work Bench.  But they need more.

This brings up the subject of tools.  Compiled programming languages are
poor learning tools at best.  BASIC continues to be popular despite
comments by people "in the know."  I think Unix shell programming has
the answer to a point.  While travelling on airlines, you might see some
little electronics kits for the bored passenger.  You plug in modules
and make a radio, key set, door buzzer, mini-Cray-1, or whatever.
What is needed is a software kit like this to teach the basic of
computing.  It should not be a single monolith package [the `Duff criterion,'
I just came from the Usenix graphics workshop], but a collection of small
tools...(haven't we heard this before).

There is a woman who was in charge of the 1984 ACM meeting who lead the
fight against the Apple bill.  She and her colleagues reasoned that the
general quality of educational software was extremely poor.  Computer
literacy (she said) is not knowing a programming language or word processor.
You might get in touch with her:
	Karen Duncan
	15 Parsons Way
	Los Altos, CA zip???
She has some very good ideas and might be able to help you.

--eugene miya
  NASA Ames Research Center
  {hplabs,ihnp4,dual,hao,vortex}!ames!aurora!eugene
  emiya@ames-vmsb.ARPA

brian@uwvax.UUCP (Brian Pinkerton) (12/16/84)

Logic is certainly the most important word here.  The ability to arrive
at a conclusion given some inputs.

Also important, I think, is the ability to break down an idea into its
components.  This is why I DON'T advocate teaching programming
languages to 1st semester CS students.  What good does teaching some
pascal do if they can't make use of its structured nature?

I would suggest that students take a class in some sort of analysis,
where they don't have to know much about a specific topic to learn the
methods of problem description and solution.  If you throw this plus
learning a programming language into the same course, are your students
going to learn what you want them to?

brian
-- 
Brian Pinkerton @ wisconsin
...!{allegra,heurikon,ihnp4,seismo,sfwin,ucbvax,uwm-evax}!uwvax!brian
brian@wisc-rsch.arpa

west@utcsrgv.UUCP (Thomas L. West) (12/18/84)

  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.

   Tom West
 { allegra cornell decvax ihnp4 linus utzoo }!utcsrgv!west

thomson@uthub.UUCP (Brian Thomson) (12/18/84)

From Eugene Miya @ ames:

> English majors would best be served learning word processing and things like
> the Writer's Work Bench.  But they need more.

No more than they previously needed courses in typing and bookbinding.
This notion of universal computer literacy is receiving rather more
support than it deserves.
-- 
		    Brian Thomson,	    CSRI Univ. of Toronto
		    {linus,ihnp4,uw-beaver,floyd,utzoo}!utcsrgv!uthub!thomson

rcb@rti-sel.UUCP (Randy Buckland) (12/18/84)

Teaching CS in HS is fine and should be encouraged. But why stop there?
I personally learned how to program in BASIC in 7th grade. It was an
experimental program in teaching CS. I have not stopped since. Actually,
I see no reason not to teach children to use computers as soon as they
can read. Anybody vote for 2nd grade. That's a good reading level to start.
Teach something like LOGO. It is simple, it teaches logical thinking, and
it is fun to draw pictures and will hold a childs interest.

					Randy Buckland
					Research Triangle Institute
					...!mcnc!rti-sel!rcb

jona@clyde.UUCP (Jon Allingham) (12/18/84)

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

mauney@ncsu.UUCP (12/18/84)

1) Computer Science, and even computer programming, should have a status
   in high schools no higher than that of Calculus.  It should be offered
   only by schools not having any difficulty supporting the important
   subjects, and should be required only for those student for whom
   calculus is required.

2) I am a computer science professor, and the biggest favor high schools
   can do for me is to teach logic, problem solving, and clear thinking.
   If students can do that, programming will not be hard to pick up.
   The only capital investment required for the schools is buying a few
   good teachers.

3) If you insist on teaching something with computers, try this: get some
   hardware and a wide variety of software packages -- games, spreadsheets,
   address books, whatever.  Teach the basic steps of using a package,
   then give assignments that require the use of more advanced features.
   And then, and this is the useful part, have discussions about the
   packages: how good is the documentation?  how good is the user interface?
   how useful is the package in reality?  is it an improvement over the
   existing low-tech counterparts?  how could things be improved?
   Students will learn to use computers, and learn when not to use computers,
   and learn to demand quality software.  Students who plan to major in
   computer science will have a perspective that will enable them to 
   produce really useful software when they graduate.

It's only a suggestion, of course.
-- 

_Doctor_                           Jon Mauney,    mcnc!ncsu!mauney
\__Mu__/                           North Carolina State University

andrew@garfield.UUCP (Andrew Draskoy) (12/19/84)

Who is going to teach the courses?  Around here, the teachers mostly
learned what they knew from a two-week course on BASIC offered to teachers
during the summer.  Obviously some of them would know more, but how many?

Rather than teaching Computer Science per se, I think a better background
in logic is needed.  I seem to recall having being taught about the basic
boolean operations, minterms, k-maps, etc. in at least three beginning or
near-beginning C.S. courses.  In addition, the main student-killer course
here is the discrete structures course, in which it has become apparent
that most students don't have an adequate familiarity with proofs.

A little bit of logic would perhaps set students into the right
"frame-of-mind" for doing Computer Science later.

-----
Andrew Draskoy
{akgua,allegra,ihnp4,utcsrgv}!garfield!andrew
The opinions expressed above may not represent those of the author
after he has had some sleep.
-- 
Andrew Draskoy
{akgua,allegra,ihnp4,utcsrgv}!garfield!andrew
The opinions expressed above may not represent those of the author
after he has had some sleep.

annab@azure.UUCP (Anna Beaver) (12/19/84)

> 
> I would suggest that students take a class in some sort of analysis,
> where they don't have to know much about a specific topic to learn the
> methods of problem description and solution.  If you throw this plus
> learning a programming language into the same course, are your students
> going to learn what you want them to?
> 
> brian
> -- 
	I came in on the tail end of this discussion so I'm not sure if this
  point has been brought up.
	People are born with pretty remarkable reasoning abillities. If they
  are taught good problem solving methods EARLY they have a better chance
  of grasping new concepts more quickly. However, it is also true that most
  of what we have learned comes from example and exposure to the concepts
  and/or the equipment involved.
	My 14 yr. old son has been exposed to and using computers for about
  5 yrs. now and has a good understanding of how a lot of it functions.
  The Junior High School which he attends has several computers and they
  have used him as a resourse to tutor teachers as well as other students.
	If the propper problem analysis techniques are taught from EARLY on
  and the children are allowed to use computers more in school, as well as at
  home they could learn basic programming concepts BEFORE high school, as some
  are now doing. 

					 Annadiana Beaver
					A Beaver@Tektronix

scott@gitpyr.UUCP (Scott Holt) (12/19/84)

> 
> My question to the net readership is what should the content of a required
> course be?  If you are a college educator, what information do you want
> incoming Freshmen to possess regarding computers?  Not just students in CS
> but *all* of your incoming students.  Do potential English majors really
> gain something by learning how to code Pascal?  Or would they be better
> served learning word-processing and spread sheets?

   Well, I am not college educator, but I do have some thoughts as to the  
teaching of 'computer science' before college.
   I do not feel that 'computer science' should be required at the high school,
or even college level. 'Computer literacy', however, should be required of all
students reguardless of profession...it is a skill that will be needed for    
survival in the near future ( if not now ). By 'computer literacy' I do not 
mean programming, but rather an introduction to the impact of computers on 
society and how computers can help in any profession. Just as chemistry is not
required for many professions, niether should programming. It should be offered
as an elective, just as many other sciences are, and It should be stressed that
for students planning on entering engineering or science, programming will
be a valuable skill.
   Personaly I feel that recent trend towards offering AP classes in computer
science is great...I think we should offer the students anything they can 
handle, and many of the can handle it. There are far to many people out there
however, who have absoultly no need for programming to require that it be
taught as a mantatory subject. The same resons why we dont require Calculus,
Physics, and many other subjects for every student should apply to computer
science...not that many people need to know how to program. Everybody, though,
needs to know the impact of the computer on their life.

                             - Scott Holt
                               ..gatech!gitpyr!scott


-- 

---------
Yes, I'm allright....ayeeee Haaa Haaa Haaa!!!!

Scott Holt
Po Box 36199
Georgia Institute of Technology
Atlanta, GA 30332

...!{akgua,allegra,amd,hplabs,ihnp4,masscomp,ut-ngp}!gatech!gitpyr!scott
...!{rlgvax,sb1,uf-cgrl,unmvax,ut-sally}!gatech!gitpyr!scott

woof@psivax.UUCP (Harold Schloss) (12/19/84)

It would seem to me that most high school students would be easily taught
enough about a computer to be educated users. By this I mean, they would
know about storage devices (floppies) and the need for backing them up.
They would know the rudiments of some operating system. They would know
enough to write a program in some language that printed to the screen or
other output device, got input from the user, had a subroutine, and at
least one loop. (This is loosely based on the Harvard College requirements
for all undergraduates.) To be really complete they could learn about recursion.

The language that is used to teach this doesn't seem to me to be a very
important issue. It should be (in my opinion) a language that does not
require the teacher to get really bogged down in teaching some unique
method of programming. Languages I feel might be appropriate are BASIC,
PASCAL, C, and similar types of languages. I don't feel that LISP or
PROLOG are good vehicles for learning computer programming initially.
They are not relevant to most programming environments I have encountered
so far. They are efficient for the tasks they were designed I'm sure, but
it seems to me that they are somewhat difficult for someone's first language.
(I'm aware that other people hold strong opinions on the subject that may
differ, so try not to flame me too much.)

My first experience with computers came with a class taught in the
afternoons at the local high school as part of California's Mentally
Gifted Minors program. I was in the sixth grade at the time and we were
taught a rudimentary form of assembly language on an old Litton computer.
(It even had a drum memory!) As I remember there was very little in the
way of an age barrier to understanding the computer, but I will admit
the class was self selected. The group of kids involved obviously had
some interest in the subject already though. It would have been nice
to have taught a high level language, but it took an hour to load
FORTRAN 2 off the paper tape so we made do (quite well) with the built
in assembly language. I think that we would have learned just as much
if we had been taught the same subject matter in the 3rd grade.


-- 
		Hal Schloss
		(from the Software Lounge at) Pacesetter Systems Inc.
{trwrb|allegra|burdvax|cbosgd|hplabs|ihnp4|sdcsvax}!sdcrdcf!psivax!woof

ag5@pucc-k (Henry C. Mensch) (12/19/84)

<<>>

	I also worked as a Teaching Ass't/Lab Ass't when I was a student
at Syracuse University, and I agree that a computer-ignorant freshman is
more desirable as a student than those who have had computing in high
school.

	One of the courses that I worked for was a freshman introduction
to Computer Science in which the language of instruction was UCI Lisp.
Of course, all those freshmen who walked in with a blank slate fared better
than those who carried high-school programming knowledge because

	-)  the high-school programmers invariably learned how to
	    'program' in BASIC or FORTRAN IV on incredibly-outdated
	    equipment (In high school, I learned on a Nova 2/10 
	    which, when driving four terminals <3@110baud, 1@300 baud>
	    was as slow as a VAX with a >30 load average),

	-)  the high-school teacher who would wind up teaching these
	    courses was either learning the material on-the-fly <not
	    real good when the students who were hacking knew more
	    than the teacher did> or were recalling it from a course
	    in programming which they had while in college several
	    eons ago (since most high schools haven't the cash to
	    hire someone truly competent, and since private industry
	    has the cash to siphon off those math/physics/other-science
	    teachers who have had considerable experience with computers),

	-)  the students assumed that, since they had computing in
	    high school, this course wouldn't present much new knowledge,
	    and, as such, would blow it off <only to find themselves up
	    to their asses in alligators because it wasn't as easy as
	    they thought it would be>.

	After all this, it would be easy to conclude that I am against
programming/'computer science' courses in high school.  This is *not*
the case.  

	Instead the high school course needs to be greatly modified.  
A competent teacher being paid a livable salary has to teach the course.
(The 'livable salary' part puts the high school course beyond the means
of most school systems since schools pay abysmally low salaries to their
teachers).  

	Sufficient equipment must be available to the students.
Four terminals on an incredibly slow and out-of-date machine for
>100 students doesn't quite work.  

	The bottom line:  if the course can't be taught well, then don't
teach it.  
-- 

-------------------------------------------------------------------
Henry C. Mensch  |  User Confuser | Purdue University User Services
{ihnp4|decvax|ucbvax|seismo|allegra|cbosgd|harpo}!pur-ee!pucc-i!ag5
-------------------------------------------------------------------
           "Ah, the sweet song of the morning grouch!"

abc@brl-tgr.ARPA (Brint Cooper ) (12/19/84)

> Teaching CS in HS is fine and should be encouraged. But why stop there?
> I personally learned how to program in BASIC in 7th grade. It was an
> experimental program in teaching CS. I have not stopped since. Actually,
> I see no reason not to teach children to use computers as soon as they
> can read. Anybody vote for 2nd grade. That's a good reading level to start.
> Teach something like LOGO. It is simple, it teaches logical thinking, and
> it is fun to draw pictures and will hold a childs interest.
> 
> 					Randy Buckland
> 					Research Triangle Institute
> 					...!mcnc!rti-sel!rcb

Just for the record, this isn't such a revolutionary idea.  Here in
archaic Harford County, Md., LOGO is being taught to primary children
(grades 1-3, but I'm not sure where they start)t), and intermediate
level (4-5) are learning BASIC, both on Apple IIe machines purchased by
the PTAs.  In high school, the kids can learn BASIC and FORTRAN in
classroom settings.  My son is learning PASCAL in an "independent study"
course of 1 hour per day.  It's independent study because noone on the
faculty knows enough PASCAL to teach it!


Brint
		 ARPA:  abc@brl.arpa
		 UUCP:  ...{decvax,cbosgd}!brl-bmd!abc

		  Dr Brinton Cooper
		  U.S. Army Ballistic Research Laboratory
		  Attn: AMXBR-SECAD (Cooper)
		  Aberdeen Proving Ground, MD  21005-5066

Offc:    301 278-6883    AV:  283-6883     FTS: 939-6883
Home:	 301-879-8927
 

annab@azure.UUCP (Anna Beaver) (12/21/84)

> I see no reason not to teach children to use computers as soon as they
> can read. Anybody vote for 2nd grade. That's a good reading level to start.
> Teach something like LOGO. It is simple, it teaches logical thinking, and
> it is fun to draw pictures and will hold a childs interest.
> 
> 					Randy Buckland
> 					Research Triangle Institute

	My son Kevin was only 4 and learned to type in simple 
	commands,  such as run, dimentional commands for games...
	He was quite exited over doing the simple things he could
	understand, having already learned the alphabet.

	A Beaver@Tektronix

reid@Glacier.ARPA (12/21/84)

> My question to the net readership is what should the content of a required
> course be?  If you are a college educator, what information do you want
> incoming Freshmen to possess regarding computers?  Not just students in CS
> but *all* of your incoming students.  Do potential English majors really
> gain something by learning how to code Pascal?  Or would they be better
> served learning word-processing and spread sheets?

I teach the "weedout" CS course at Stanford. I think that teaching CS in
high school is a mistake. I would much rather see high school students left
alone to hack, computer club style, while their coursework concentrated on
math, science, and English. Especially math. There is no particular crime in
teaching CS in high school (see caveat in next paragraph) but people usually
make room for it in the curriculum by leaving out math, which is a crime.
I also like students who can spell and who can write literate paragraphs.

The things that I wish incoming high school students knew include proof
technique (logic and proof by induction), more geometry and trig, more
problem-solving abilities, number bases, matrices and systems of
simultaneous linear equations (minimal exposure, not complete mastery),
physics, expository writing, and probably lots more that I can't think of
now. 

The things that I wish incoming high school students didn't know include
anything having to do with Basic other than pure, simple Dartmouth Basic,
(if your Basic has PEEK, POKE, or PRINT # you should throw it away),
anything having to do with small-computer operating systems (CP/M, DOS,
etc.), and any skills involving floppy disks.

	Brian Reid
	Stanford

citrin@ucbvax.ARPA (Wayne Citrin) (12/21/84)

I'm in agreement with those who think that computer science shouldn't be
required in high school or college.  I'd like to take that one step further
and disagree with those who feel that "computer literacy" should be required.
No one disagrees that regular "literacy" (you know, the ability to read and
write) should be required, since it's the key to all other study.  The problem
is with the term "computer literacy," which by its very nature makes people
think that it's as important as literacy.  I feel that what's called "computer
literacy" is a useful skill on a par with knowing how to drive a car ("auto-
mobile literacy"?).  That is, it's a good skill to know, but no one requires
that it be taught in school, and many people get by very well without having
that skill (believe it or not).  However, like driver ed, "computer ed"
should be available to those who want to learn it.  In high school, it should
be taught strictly as programming, either in the business department or
in industrial arts, for people who do not plan to go on to college.  In 
college, a more general "computer literacy" course may be offered, but
certainly not required.

Wayne Citrin
(ucbvax!citrin)

jpj@mss.UUCP (J. P. Jenal) (12/21/84)

Allow me to humbly suggest that you might be missing my point.  What I am
interested in is what the average student *needs* to know - not what some
students might be capable of.  While I certainly agree that there are
kids who can handle any challenge that a teacher may design, that is
not the experience of most students.  It is their needs that I am trying
to address.  

One of my other hats is that of the Algebra I teacher.  Having done that
for three years I have some fairly strong opinions on what elementary
school math teachers should be teaching - that they are not!  (How are
*your* kids at adding fractions?)  It seems that teaching the basics, which
are clearly difficult, is not what most aspire to do. 

I would like to avoid being guilty of the same sins.  Thus, my request.
If you teach at the college level or have recently been through your
college experience - or are doing so now - in something other than cs, what
did you know going in and what would have been most helpful for you to have
known?

Thanks to all who have written to me directly - please continue to do so or
followup to the net.

Cheers...

	Jim Jenal		(aka ...!scgvaxd!mss!jpj)
	Mayfield Senior School	( "  ...!ihnp4!mss!jpj)

chris@umcp-cs.UUCP (Chris Torek) (12/24/84)

What with all this ranting and raving about what should and should not
be taught, and how BASIC causes brain-damage, I feel compelled to
relate my own personal life's tale :-).  [This :-) is intended to set
the tone for the rest of this article, except for a serious note at the
very end, if you don't feel like wading through the next N zillion words.]

The first computer program I ever saw was written in a Radio Shack on a
TRS-80 Model I in what was called ``Level I BASIC''.  I promptly fell
in love with computing, and soon (a year or two later) I had scraped up
about $500 and bought my very own computer (with Level II, natch).  So
my first computer language was indeed BASIC.

I set out to learn as much as I could about my new toy.  As it was a
Z80-based machine, my second language (if you can call it that) was
assembly.  I used assembly code anytime something in BASIC wouldn't do
the job, which became annoyingly frequent as I acquired more hardware
and software.  I had bought the Editor/Assembler package; however, this
worked exclusively from tape, and when I got my disk drive running, I
naturally wanted to be able to store my files on disk.  This was the
driving force behind my first ``large scale project'' in BASIC:  to
write an assembler.  I did, and it even worked, at the stupendous rate
of 15 lines per minute---per pass.  (Well, can't have everything.)

Along about this time, I managed to wangle an account on an IBM 370
machine supporting the high school system in the county.  It ran IBM's
VSPC (Virtual Storage Personal Computing) and had two(!) languages
available, namely, BASIC and FORTRAN-IV.  Naturally I had to learn to
program in FORTRAN.  I found it to be a great improvement over BASIC.
Imagine:  local variables!  *Functions*!  Ah, if I had only had such
powerful tools when writing my assembler....  Anyway, FORTRAN was my
third language.

Many were my FORTRAN hacks, not the least of which were a few programs
that read various system tables and could show who was logged on, what
they were doing, and so forth.  The heart of this code was actually
stolen from Montgomery College (MC), a local community college which
rented time on the IBM machine (the 370 was owned by the Mongomery
County Board of Education).  The code depended on various features of
the FORTRAN compiler, and worked by changing an array reference into a
subroutine call, allowing one to run arbitrary 370 machine code.  The
community college also had an assembler (written in FORTRAN), which we
also managed to copy.  So I learned some 370 assembly, and had fun
dumping system tables.  (We---two cohorts and myself---also managed to
frighten the Board of Ed quite a bit by finding various publicly-
readable passwords, and doing some stuff they thought couldn't be
done.  But we didn't destroy anything; all we wanted was enough space
to run the ``PITS'' adventure game... but that's another story
entirely.)

Sometime during (I think) my senior year in high school, in parallel
with the 370 system hacking, I found a new concept in programming:
Structured FORTRAN, or STRUCFOR.  The folks at MC had a preprocessor
that converted WHILE/ENDWHILE, REPEAT/UNTIL, and IF/ENDIF statements
into the equivalent FORTRAN code.  I never did get a copy of theirs,
but wrote my own for my TRS-80 (I had the Microsoft FORTRAN compiler by
then).  This, I think, gave me the idea of designing my own language (a
project I never did complete).  Soon after this, though, one of my
cohorts mentioned above discovered Pascal.  I had thought I was amazed
at FORTRAN, but here in the Jensen & Wirth report was a language
positively miles ahead of even STRUCFOR.

Fortunate or not, I didn't have any chance to actually experiment with
Pascal before I came to the University of Maryland, and when I came
here (fall '81), the K&R C book had just appeared in the bookstores, so
I used C before Pascal.  I know now that, in reality, Pascal has some
serious problems.  (Yes, most implementations have workarounds for most
of the problems.  The problems still exist.)  But it does have that
important concept of structured programming.

[Begin serious conclusion]

In conclusion, I think that having started with BASIC hasn't been a
problem for me at all, because I used it enough that I felt the need
for something more.  Structured programming provided that ``more''.
Anyone who's written a large BASIC program probably wound up doing what
I did:  keeping a (paper) list of the entry points of each subroutine,
along with the variables it used for input and output, and grouping
related code by line number.  Not very clean, but effective.
Structured programming is obviously better, and having used both, I
know which I prefer.  More importantly, I know WHY I prefer it.

I don't think that what I did is for everyone.  Three years of
experience with the wrong approach to programming is not a viable way
to teach a college student that it is indeed the wrong approach.  But
boy, oh boy, it sure is effective!
-- 
(This line accidently left nonblank.)

In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (301) 454-7690
UUCP:	{seismo,allegra,brl-bmd}!umcp-cs!chris
CSNet:	chris@umcp-cs		ARPA:	chris@maryland

scott@gitpyr.UUCP (Scott Holt) (12/26/84)

>                                  However, like driver ed, "computer ed"
> should be available to those who want to learn it.  In high school, it should
> be taught strictly as programming, either in the business department or
> in industrial arts, for people who do not plan to go on to college.  In 
> college, a more general "computer literacy" course may be offered, but
> certainly not required.
>
    Mabey it need not be taught at the highschool level, but I think computer
 literacy ( that is, enough knowlege to wipe away the anxiety associated with
 non computer types using computers ) should be a prerequisite to programming.
 I work in a user assistance office at my school and one of the biggest      
 problems I see first time programmers having to deal with is fear of the   
 the computer. Most of these people are freshman and in an non computer major.
    Perhaps a course in technology and modern society should be required of all
 students. Such a course would help wipe away many of the fears many people
 have about our increasingly technologicly oriented society.

                            - Scott Holt
 
-- 

---------
Yes, I'm allright....ayeeee Haaa Haaa Haaa!!!!

Scott Holt
Po Box 36199
Georgia Institute of Technology
Atlanta, GA 30332

...!{akgua,allegra,amd,hplabs,ihnp4,masscomp,ut-ngp}!gatech!gitpyr!scott
...!{rlgvax,sb1,uf-cgrl,unmvax,ut-sally}!gatech!gitpyr!scott

kevin@cornell.UUCP (Kevin Karplus) (12/27/84)

I am also a Computer Science professor (though I mainly teach graduate
courses in VLSI Design for the EE department).  I want to second Brian
Reid's request for students who can write, who can spell, and who can
do a little math.  I'm not talking freshmen, I'm talking graduate
students!

My VLSI design course is taken by about half the EE Masters of
Engineering students at Cornell.  The design report they turn in is
usually the first technical paper they have written, in some cases the
first paper over 10 pages long.  This year's seem a little better than
previous ones, but I'm still dreading having to read 1600 pages of bad
English. Most of the students have the excuse that they are not native
speakers of English, but some of the worst prose comes from American
students trained in American high schools.  At least the foreign
students have been exposed to English grammar, even if they haven't
mastered it.

As for teaching typing---I tried to take a typing class in high school.
They taught touch-typing from clean copy, a marginally useful skill.
After taking the course, my typing speed was half what it was before
the class.  Within a few years I dropped all the touch typing
techniques and developed my own typing system (which avoids the little
fingers and emphasizes the index fingers).  Typing shouldn't be a
course, it should be a skill developed as a by-product of writing.
Perhaps the best way to learn to type is to play one of the
computerized typing games as a young child.  High school is a bit late
for learning to use a keyboard.

I learned programming in high school, and thought I was really hot
because I could hack better than any one in the school (including the
"professional" programmer hired by the high school).  I didn't call it
hacking, because I'd never heard the term.  I learned FORTRAN in class,
and taught myself IBM 1130 assembly language.  I learned nothing about
structured programming (it hadn't been popularized yet) or data
structures (other than arrays).  The instructor was a fairly
intelligent math teacher who had learned enough FORTRAN to teach the
language, but not much more.  Compared with current high school
computer courses, I'd say the course ranked in the upper half.  It took
me four years to unlearn a lot of what I had taught myself in high
school.  In retrospect, I learned far more useful material in my
English classes than I did in my science or programming classes.
That may be because I had old-fashioned teachers who insisted on
teaching grammar, vocabulary, spelling, and writing.

High school students should be given the opportunity to use a computer.
Those sufficiently motivated should be taught to program.  There is no
reason to require everyone to program (at least, not yet).  A highly
intelligent teacher is essential.  A highly trained teacher is not
quite an adequate substitute.  An untrained, unintelligent teacher is an
active menace to education (but at current salaries, what do you
expect?).

All that was in the days before computer science was a "hot" field, so
I majored in math as an undergraduate.  Although I rarely have any use
for the specific facts I learned as a math student, I would still urge
budding computer scientists to study math before considering CS.
Programmers can start out in CS, computer scientists need a bit broader
base.  As a minimum, one should learn to write proofs that require
something beyond the axioms of the theory.  That is, students should
learn to do proofs that require a thorough understanding of work done
by other people.  I'd particularly recommend abstract algebra, formal
logic, and graph theory for undergrads.  High school students might
benefit from an early exposure to formal logic and simple proofs.  They
should relearn it in a more rigorous course in college, but prior
exposure may induce them to study mathematical logic, instead of the
watered down version offered to juniors in philosophy at most colleges.

This message has gotten too long.  I apologize for rambling.

				Kevin Karplus

west@utcsrgv.UUCP (Thomas L. West) (12/29/84)

<>
   I think a computer literacy course is called for.  While I doubt that it need
be a full course, there should be some familiarisation with computers for ALL
students.  It is unlikely that we are going to be able to predict which students
are going to be using/programming computers in a few years hence, but we can be
sure that those students suffering from computerphobia are going to have a
strong strike against them.  Hence to avoid this phobia infecting a new
generation and debilitating them, I think that a mandatory course (or part of a
course) should be introduced to at least give them the idea that computers
don't bite.
   The number of adults (especially women) who exhibit techno-phobia is simply
amazing.  These people are barring themselves from a myriad of positions that
are growing all the time (as well as stopping a possible increase in their 
productivity.)  This phobia will be around until everybody uses computers
or computer literacy is widespread.  In order to keep doors open for these
people (and make computerisation of life easier) we need to educate the
phobia out as soon as possible.
  In order to get the best benefit from the program, probably the classes should
be segregated so that the young women in the class aren't intimidated by the 
possibly more enthusiastic young men.

  Tom West
 { allegra cornell decvax ihnp4 linus utzoo }!utcsrgv!west

sommers@topaz.ARPA (Liz Sommers) (12/30/84)

>   In order to get the best benefit from the program, probably the classes 
>  should
> be segregated so that the young women in the class aren't intimidated by the 
> possibly more enthusiastic young men.
> 
>   Tom West
>  { allegra cornell decvax ihnp4 linus utzoo }!utcsrgv!west

Come on now.  As far as I have seen so far, the women in most CSE classes
that I have either taught or given have been more enthusiastic then the men.
There is a large problem (that I used to run into in math classes) that the
teachers will ignore the women, giving more of their attention to the men,
and thus finally discouraging the women.

mamaliz
(new to this net)
seismo!rutopaz!sommers

cuccia@ucbvax.ARPA (Nick Cuccia) (12/31/84)

    Greetings - Mayfield has been teaching Computer Science as an elective for
    three years with Advanced Placement Computer Science being offered 

One thing I'm curious about is what schools are accepting the Computer
Science Advanced Placement test as a substitute for a required computer
science course; who gives studens credit for taking the test and scoring
a 4 or above?  A recent InfoWorld (don't have the date, but can find it)
stated that UC-Berkeley and MIT weren't giving credit for high scores,
but Stanford was. 

My old high school is just getting started with teaching computer science
courses (although the community's other high school has been teaching
programming on PDP-8s for about ten years or so), and its principal looks
to me for 'the pulse of academic computing'--whatever that is...  I would
also be interested in what would be suitable for teaching in high school
CS courses, but also who accepts/does not accept the CS AP test in lieu
of a required course.

--Nick Cuccia
--cuccia%ucbmiro@ucbvax	(ARPANET)
--ucbvax!cuccia		(USENET)

cuccia@ucbvax.ARPA (Nick Cuccia) (12/31/84)

> Of course, all those freshmen who walked in with a blank slate fared better
> than those who carried high-school programming knowledge because
> 
> 	-)  the high-school programmers invariably learned how to
> 	    'program' in BASIC or FORTRAN IV on incredibly-outdated
> 	    equipment (In high school, I learned on a Nova 2/10 
> 	    which, when driving four terminals <3@110baud, 1@300 baud>
> 	    was as slow as a VAX with a >30 load average),

My first exposure to computers in school was when I was in eighth
grade, in junior high, in 1977-78 (the TRaSh-80 and Apple II had just
been released around that time).  We had to make do in the Santa Barbara
Unified School District with a Nova 2/10 and one 300-bd terminal (remember
those lovely Teletype machines--the ones with paper tape readers? 8-)
per school (three high schools, four junior high schools).  With 35
students in the class, forty-five minutes per day, this meant that each
student had roughly seven minutes of terminal time per week in a given
class.

The instructor made up for this by teaching us the basics of Boolean
Algebra and deductive logic.  I found this to be the most valuable
class that I had taken in secondary school, for its applications were
not limited to just CS or even science.

One problem that had arisen is that there are, to my knowledge, no
books on mathematical logic or descrete math written with a high school
student in mind that is currently in print.  The book that we used
had been out of print since 1964; the teacher bought his own copies,
and we were not allowed to take them out of class.

> 	Instead the high school course needs to be greatly modified.  
> A competent teacher being paid a livable salary has to teach the course.
> (The 'livable salary' part puts the high school course beyond the means
> of most school systems since schools pay abysmally low salaries to their
> teachers).  

It is my feeling in general that teachers in general should be paid
as much as engineers and chemists; then again, I don't know of any
public school district that could possibly afford this and maintain
a proper physical plant and procure adequate learning materials and
resources (books, computers, etc.) at the same time.

> 	The bottom line:  if the course can't be taught well, then don't
> teach it.  

Agreed.

> Henry C. Mensch  |  User Confuser | Purdue University User Services

--Nick Cuccia
--cuccia%ucbmiro@Berkeley	(Arpanet)
--ucbvax!cuccia			(USENET)

gregbo@houxm.UUCP (Greg Skinner) (01/06/85)

> From: cuccia@ucbvax.ARPA (Nick Cuccia)

> One problem that had arisen is that there are, to my knowledge, no
> books on mathematical logic or descrete math written with a high school
> student in mind that is currently in print.  The book that we used
> had been out of print since 1964; the teacher bought his own copies,
> and we were not allowed to take them out of class.

I had a pretty good high school mathematics curriculum emphasizing discrete
math and logic.  The texts used were part of the Unified Modern Mathematics
series.  I don't remember offhand who wrote them but if there are any Stuy-
vesant High School alumni who went through the Unified Modern Mathematics
program I'm sure one of them will remember.

Various subjects were covered that are applicable to a high school student's
training for computer science.  Among them were elementary number theory,
groups, fields and rings, boolean algebra and set theory.  When I was in high
school I found it to be very challenging and exciting -- having that mathe-
matics helped me to choose computer science as a major in college.
-- 
			Baby tie your hair back in a long white bow ...
			Meet me in the field, behind the dynamo ...

Greg Skinner (gregbo)
{allegra,cbosgd,ihnp4}!houxm!gregbo