From: crawford@church.mitre.org (Randy Crawford)
Subject: Re: Programmers
Organization: The MITRE Corporation, McLean, VA
Date: Sat, 12 Sep 1992 04:31:33 GMT

(Maybe rrn will manage to post less than 4 copies of _this_ article. :-{ )

In article <PSU.92Sep11102557@ptero.cs.duke.edu> psu@cs.duke.edu (Peter Su) writes:
>
>>  Indeed!  I have found that the biggest problem, here at college, is
>>  that Computer Programmer is NOT a major.  It's not even a minor!
>>  Instead, I get to be a Computer Scientist!  I don't want to be a
>>  Scientist!  I want to be a Computer Programmer, [...]
>
>As a budding academic (heh heh) I, of course, must come to the defense
>of those people who work in 'math theory bullshit.'
>
>This alleged 'bullshit' forms the basis for much of what is available
>on a modern computer system.  Let's look at UNIX:
>
>- The libraries have a routine called qsort, [...]

This is an algorithm, not math theory.  To see the difference, pick up and 
compare any algorithm book with Knuth et al's Concrete Math or a text on 
computability.  I agree with the earlier poster, just about no one (even in 
academia) will have use for such an extensive treatment of numerical theory 
-- as opposed to a solid understanding of algorithms and computational costs, 
which everyone should have.

>- There is a program called Lex that parses regular expressions, which
>were made up by a math theory bullshit guy named Kleene.  [...]

Another specific algorithm.  I suspect your appreciation for lex is as a
useful program which illustrates some algorithm, not as a wonderful example 
of abstract algebra.  And BTW, lex doesn't do much with regular expressions.
It's sole responsibility is identification of lexical tokens.  Look to YACC 
for regexps and more.

[mixture of references to algorithms and OS/PL theory deleted]

>What's my point?  My point is this: Any programmer worth his salt must
>have at least some idea why quicksort is good, how lex works and how
>yacc works in order to make himself or herself better at what he/she
>does. It is inexcusable to say 'I want to be a good programmer' and
>NOT pay attention to the more important parts of the large body of
>'math theory bullshit.'

I think you and we differ on what is math theory. I agree with you that there 
is a real need for a working programmer to appreciate the big O complexity of 
algorithms, and maybe even whether a certain task is computable.  But I sus-
pect we differ when it comes to expecting most CS grads to be able to analyze 
algorithms and derive their complexity, or decide whether a task in NP or 
*P-complete, or compare partial or mu-recursive functions.

>If, after taking algorithms classes, OS classes, programming
>lanaguages, compilers, etc, you *can't* figure out how a UNIX server
>works on your own, or at least in Perl, then either YOU are clueless,
>or those who taught you are clueless.  This doesn't mean that the
>material is irrelevant to what you are interested in.

Learning a lot in your theory courses which is applicable to sockets and
TCP/IP, are you?

>Go back and read Programming Pearls and More Programming
>Pearls...twice.

Nothing there about Unix internals -- and you won't find your employer-to-be
asking you as a BS or MS to do much algorithmic analysis (much less appli-
cation of number theory).  However, you likely will be expected to get your 
head around interprocess communication mechanisms, costs and tradeoffs, as 
well as a host of other OS and programming language and software engineering
issues which are skipped in the undergrad CS curriculum pretty much entirely.

The original assertion still stands -- number theory and computability has
little business being part of an undergrad CS curriculum, unless the bulk
of the undergrads can be expected to go on for CS PhDs, where they may find
use for such things.
-- 

| Randy Crawford        crawford@mitre.org        The MITRE Corporation
|                                                 7525 Colshire Dr., MS Z421
| N=1 -> P=NP           703 883-7940              McLean, VA  22102
Newsgroups: comp.edu,comp.lang.misc,sci.math,misc.education