[net.lang.pascal] pascal ass intro. language long

hsu@eneevax.UUCP (Dave Hsu) (02/24/86)

***WARNING: the following article is heavily opinionated, and does
not necessarily reflect the views of the University of Maryland***

In article <204@bu-cs.UUCP> bzs@bu-cs.UUCP writes:
>
>From: manis@ubc-cs.UUCP (Vince Manis)
>>The average introductory student has no longterm commitment to computer
>>science, so one ought to teach him/her a directly usable skill; that means
>>teaching a language s/he has heard of.
>
>This is the attitude I object to that leaves us nowhere in Computer Science
>Education. I believe one has to abandon the job training mentality and just
>teach their subject on the sole assumption that everyone in the room is there
>to build a foundation for computer science. If that necessitates opening
>a different course for 'programming', so be it.
>...
>
>It is my firm belief that:
>
>	a) College is not job-training in such a direct manner
>	as emphasizing programming right from the start implies.
>
>	b) Computer Science is not programming, nor is it not not
>	programming (double negative intentional.) Programming is
>	simply a critical lab skill that may take more than one
>	intro course to develop properly and should be nurtured
>	within the context of the big picture, not as an end unto
>	itself.
>
>My opinions, I believe, make more sense when compared to other sciences.
>One does not teach an intro course in glassware and centrifuging in a
>chemistry department nor expect people after a year of intro chem to
>be able to get a job at General Foods or the Public Health service doing
>product testing. Intro physics is not confused with engineering, intro
>Math with accounting or actuarial skills.
>
>As absurd as these comparisons appear I am certain that these same
>attitudes are held in regards to computer science, that we teach
>programming because it is a fast road to a good job.
>
>	-Barry Shein, Boston University

First, let me say that my views are obviously based on my observations
as a student here at UMaryland.

Secondly, I'd like to point out that Barry's observations are neither
absurd, nor universal.  Certainly, you don't teach every detailed
facet of centrifuge operation in an Intro to Chem course, but the
good job attitude is NOT universally held among CS lecturers.  And if it
is, some of them are doing a remarkable job of hiding it.

Our Computer Science department has tried in recent years to move away
from the traditional `teach-them-how-to-plug-and chug' introductory
courses by using Pascal not as an end to itself, but as a practical
vehicle to demonstrate the concepts being taught.  This doesn't stop 
at the "show them recursion and move on" level; our CS majors are fed
program proofs almost from day one.  There are no pretensions of CMSC
112 and 113 being practical programming courses, you're limited to a
tiny subset of Pascal for most of the first semester.  Assembly language
is usually taken in the second year and despite some people's belief
that it's more of an assembler course than a course in assembly, I for
one still believe that it's a valid and useful course.  Just because
some of us could program assembly before we got to college doesn't mean
that we can do without such a course; intro CS majors aren't required
to have anything except a desire to learn, remember?

Unfortunately, HOW the course is taught makes an incredible difference
in how much is learned, no matter what the text.  I've had lecturers 
from both ends of the spectrum, from those who spend the first month
telling you about the operating system and its editors, to those who
issue projects once every blue moon.  The ability to write programs 
that take advantage of some intrinsically valuable feature unique to
the IBM CMS system is completely worthless in the long run, but on the
other hand, beginners learn best (although not necessarily fastest) 
from hands-on experience.

I guess it's time for a short story.  We have a `company' here in the
US, which probably has to deal with the most beginners of any company
in the known universe.  We call it `DOD'.  And for several years now,
the DOD has offered a lucrative contract to teach software quality
assurance to its own personnel (DARPA contract monitors take note!)
Unlike any other contract that I've heard of, this one has been bounced
around a large number of contractors, and NOT ONE has proposed a single
minute of hands-on experience for any trainee.  And, not surprisingly,
every single contractor has defaulted.  Last I looked (about a year ago)
the count was around five.  Draw your own conclusions.

If I sound like I'm writing a plug, maybe it's because I am.  Last fall,
one of the post-grads here, the illustrious Stanley Dunn, began teaching
the Intro to Computer Science course.  And unlike his predecessors, he
seems to have found the ideal balance between practice and theory.  Yes,
it means discarding some of the traditional programming exercises (to
paraphrase, "Who the hell wants to write another NIM program?"), and yes,
it's largely a matter of choosing the right questions to make people think.
At any rate, Stan is writing the instructors' text for this course; we'll
get a better idea of how transportable his teaching style is in a year or so.

-dave
-- 
David Hsu	Communication & Signal Processing Lab, EE Department
<disclaimer>	University of Maryland,  College Park, MD 20742
hsu@eneevax.umd.edu  {seismo,allegra}!umcp-cs!eneevax!hsu

"Godzilla has been spotted in Sector 5!"