From: dave@prc.unisys.com (David Lee Matuszek)
Subject: Re: Computer Science Programs
Organization: Paoli Research Center - Paoli, PA
Date: Wed, 19 Aug 1992 20:10:36 GMT

In article <1992Aug19.020350.26435@src.umd.edu> clin@eng.umd.edu (Charles C. Li>
>   I think you're right.  Most majors in sciences/math/engineering
>even those that may seem pratical, almost always throw in some
>theory here and there, to make it hard, and therefore, supposedly
>worthwhile.   So, if one is trule interested in programming,
>but more practically, it might be better to major in something
>else, and take computer science courses that interest you.
>Unless of course, you can deal with the math.  In that
>case, majoring in it may be no problem at all.

Time for my $0.02.

I got my Phd in computer science, spent five years teaching it
afterward (and about the same before, as a TA), and I've spent the
last seven years in a research position in industry.

IMO computer science is, and should be, a very practical discipline,
with its roots firmly in programming.

Lots of people disagree with me, of course, and there are some profs
who get so wrapped up in abstraction that they forget how to program.
(If they ever knew.)  However, even very abstract fields have a way of
eventually becoming practical, though sometimes it takes a lot of
kicking and screaming.

I took my first course in compiler construction back when people were
first starting to think that, gee, there ought to be a way to apply
all this formal language theory stuff to compiler construction.  Back
then formal language theory was abstract stuff, and compiler
construction was a grab-bag of tips and techniques.  These days I can
construct a (small) working compiler in just a few days, because all
that formal theory has turned into a cookbook process.

I think analysis of algorithms is the most practical course to come
along since data structures.  It can be pretty theoretical, too.

My view is biased, of course, because I stayed in a research field
(AI).  I've been programming professionally for the last seven years
in, of all things, Prolog.  Personally, I couldn't stand routine
programming for, say, an accounting firm, in a language like Cobol or
Fortran.  (Just as well, because I've had very few assignments here at
Unisys that I was actually qualified for....)  I've been doing C
programming lately, and re-acquainting myself with the notion of
"low-level"....

>    I think there should be some aims toward more practicality,
> but that some theory should always be required.

So I agree completely.  But unless you want to do routine things for
the rest of your life, it's darned hard to tell what's only
theoretical and what might be useful.  Neural nets?  Functional
languages?  (BTW, in what I do I've never yet found any use for
calculus, and have pretty much forgotten it all.  "Practical" is
relative.)  My rules of thumb would be (1) avoid the profs who don't
ever actually write any programs, (2) avoid the schools who specialize
in hiring such profs, and (3) get a good grounding in the basics of
every sub-area of computer science, including the theoretical ones.

BTW, as far as I am concerned, the fields of "data processing" and
"computer science" are about as far apart as you can get.  (As a quick
generalization, if it's reeeeaaaaly boring, it's DP.)  However you
distinguish the two, be sure to make the distinction, and don't get
into a DP program thinking it's CS, or vice versa.

-- 
And the President put his hand on my shoulder and said: "Dan, 
I _knew_ Spiro Agnew.  He was a friend of mine.  And Dan...  
You're no Spiro Agnew!"
                -- Vice President Dan Quayle pwd
Xref: sparky soc.college:3642 comp.sys.mac.programmer:14224 misc.education:3159