From: mat@mole-end.matawan.nj.us
Subject: Re: Will we keep ignoring this productivity issue?
Organization: :
Date: Tue, 17 Nov 1992 01:46:38 GMT

In article <41038@sdcc12.ucsd.edu>, jschell@sdcc13.ucsd.edu (As if I'd tell you!) writes:
> In article <1992Nov16.091643.13590@netcom.com> pdh@netcom.com (Phil Howard ) writes:
> >...

> >In EE you START from the bottom and work your way up.  You learn to
> >understand the building blocks.  Computers SHOULD be taught the same
> >way.  In fact I am awfully tempted to say that the circuit theory and
> >digital circuits courses should be taught to even though wanting to
> >become programmers.  At least some machine language should be.

> I'm currently enrolled in the EE program at UC San Diego and I will be
> switching to CS soon.  ...  the EE and CS programs are pretty close to
> each other in some of the upper-division classes and identical in the
> lower-division.  The lower-division classes include Assembly Language on
> a 68030 chip along with introduction to basic hardware concepts and
> implementations such as logic gates, etc. ...  So you see, there are
> computer scientists being taught the building blocks.

I think this is a grave mistake.

In invoking the `engineering model' I do not mean that programmers should
be trained in the subject matter in which electrical engineers are trained;
I mean that they should be given tools of thought that apply to their work
as the engineers' tools apply to the engineers' work.

Back when electrical engineering was immature and the basic theory not well
worked out, the `basics' in an EE education were the construction and physics
of devices.  As time went by, these `art' (as in `state of the') of these
devices advanced.  This had two effects.  First, it took stronger theory to
understand how to construct the device.  Second, the external behavior of
the device became more uniform, more nearly ideal, and could more readily
be described by ideal theories (e.g. circuit theory).  As circuit theory
developed it became the tool by which everything else had to be understood.
The physical building blocks became advanced material.

We no longer program in assembler except out of necessity.  It is a
specialized art.  The average programmer doesn't need to know how a gate
works; in fact that knowledge will go out of date and come back in again
as circuit and logic topologies change with generations of hardware.
(Anyone remember I2L?  And how do you explain programmable gate arrays?
And for how many hardware generations will that knowledge be relevant?)
It takes more and stronger specialized knowledge to understand the
implementation.  But higher-level languages hide all this quite effectively.

What the average programmer needs to know first is how to formulate a
problem so that it is amenable to computer solution over the long term.
This demands a simple, powerful theory that can directly abstract what is
needed from the `physical' description.  I'm not saying that a programmer
shouldn't understand the architecture of a digital computer, but that such
an understanding will be an idealization, whose specifics cannot be applied
to any particular hardware, and that it will have vanishing impact on 99%
or more of his work.  His vital skills are in applying the tools he is given
to a problem, and to do that he must have a theory which provides him a
penetrating understanding of the problem.
-- 
 (This man's opinions are his own.)
 From mole-end				Mark Terribile

 mat@mole-end.matawan.nj.us, Somewhere in Matawan, NJ
From: John.Duke@f78.n130.z1.fidonet.org (John Duke)
Sender: FredGate@ocitor.fidonet