David,
To follow the example of the automotive mechanic: Universities think they
are producing Mechanical Engineers, not automobile mechanics. Duke does not
have any courses (that I knew of when I was there) good for college credit,
that taught repairing real cars, and Duke is not where I'd send a kid who
was dedicated to becoming the best automobile mechanic he could be.

A kid can get MS certification in something enormously cheaper than going to
any residential college. One hopes that a University CS Department offers
something rather more, and rather else.

Generally, we learn the minutiae required for a job, on the job; and the
concenptual framework for pursuing more challenging jobs, at University.

My first job off-campus was as a mathemetician. I was given K&R and told to
learn C, Unix, and commodities forecasting ("subscribe to the Wall Street
Journal"). Rather a lot to learn on the job for a summer job. I did not have
those skills, but I had the skills to acquire those skills. (Some.)

And I didn't appreciate unix **at all** at the time; I didn't really have a
percept of an operating system, or development environment. I just wanted a
command line to invoke a compiler. It was my **next** job, FORTRAN on
VM/CMS, that I learned what a great development environment was, and what
unix had done for me. That's when I formulated the idea that you want to
learn two of something to appreciate the essence of the something. Learn C
and LISP, and you appreciate Programming Languages; learn matrix
mulitplication and permutation composition, and you appreciate Nonabelian
Groups.

Peter



On 3/14/07, David Mathog <[EMAIL PROTECTED]> wrote:

"Robert G. Brown" <[EMAIL PROTECTED]> wrote

> On Wed, 14 Mar 2007, Richard Walsh wrote:

> > Time makes fools of us all, but especially CS departments ...
>
> Yeah, but as David pointed out, they actively try...

I wouldn't go quite that far, rather I think the situation is
more like this:

Mechanics are trained by working on real cars, ones they will
realistically be servicing once they graduate.  They
aren't perfect cars, they don't incorporate every single good
car concept.  In fact they almost certainly incorporate a lot
of bad car concepts - all sorts of pieces are poorly designed,
inscrutably assembled, and are generally a PITA to work on.
Consequently when the mechanic graduates there's a very high
probability that he will be competent to work on real cars, and won't
be thrown for a loop when he encounters something other than "the
perfect car".  Ditto for plumbers, electricians, and all other people
who work in the real world.

Conversely, the CS departments like to teach with idealized didactic
computing languages.  What that language is changes from era to
era, but they are in any case notable for rarely being used to
accomplish anything significant outside of academia.  While these
languages may be ideal for conveying key CS concepts to the
students, they in no way represent the sorts of code the
students will be encountering in the real world.   That code, like
the mechanic's practice cars, are imperfect, and most of what
they will be doing when they encounter such code is dealing
precisely with the problems associated with those imperfections.

I'm kind of glad the folks who teach CS this way don't teach foreign
language too - they'd make the students learn a fair amount of Latin
before letting them enroll in a Spanish class!  Sure Spanish is based
on Latin, but "Ubi latrina est?" isn't the fastest way to find a
bathroom in Madrid.  Well, maybe if you ask in a church.

Let's see, what language is CS is using here these days? It has
been a while since I looked:

CS 1 (Introduction to Computation, first quarter) uses Scheme.
CS 2 (Introduction to Programming Methods, 2nd quarter) seems
to be mostly Java.
CS 3 (Introduction to Software Engineering, 3rd quarter) uses who
knows what, since the course info is locked up in a "moodle"
I do not have access to.
CS 11 (Computer Language Shop, any quarter for up to 3
quarters total) is for programming practice in any of
several languages, including C, C++, Java, Python, and others
but not (any type of) Fortran.

So the undergrad here who just wants to learn to program in order
to get some work done in engineering, physics, etc. would either
slog through a quarter of CS 1 and then enroll in CS 11
for a few quarters, or would maybe try to talk their way into CS 11
without having to take CS 1.  CS 1 is "strongly recommended" for
those taking CS 11, which is catalog speak for, "it is possible
to weasel out of the prerequisite".

Regards,

David Mathog
[EMAIL PROTECTED]
Manager, Sequence Analysis Facility, Biology Division, Caltech
_______________________________________________
Beowulf mailing list, Beowulf@beowulf.org
To change your subscription (digest mode or unsubscribe) visit
http://www.beowulf.org/mailman/listinfo/beowulf

_______________________________________________
Beowulf mailing list, Beowulf@beowulf.org
To change your subscription (digest mode or unsubscribe) visit 
http://www.beowulf.org/mailman/listinfo/beowulf

Reply via email to