[comp.edu] Theoretical computer scientists know a thing or two

bobm@pirates.UUCP (Bobm Atthews) (09/18/90)

In article <12007@chaph.usc.edu> wilber@aludra.usc.edu (John Wilber) writes:
>As far as I have been able to tell, the concept of a "good" textbook on 
>"computer theory" is an oxymoron.  Since such books are invariably
>written by computer science theoreticians and computer science theoreticians 
>invariably know almost nothing about computers (as one would expect 
>from mathematicians) [deleted]

John, there are alot of theoreticians out there who know alot about
computers.  Just because someone has a concentration in one particular area
of computer science does not mean he/she is a dolt in others.  A good
school makes certain that its graduates are proficient in the 
important areas of computer science.

>                    the textbooks I have seen have all been dismally
>uninformed about the realities of computer technology (and even good
>theory for that matter).

Theory is *the* basis for all other branches in computer science: 
witness the usefulness of finite and push-down automata in designing 
compilers and syntax directed editors, the lambda calculus in 
programming language design and study, complexity theory as the 
motivator and prime driving force behind probabilistic and 
approximation algorithms (used in network design, mathematical 
software, operating system design, etc.)

In terms of being "uniformed about the realities of computer 
technology": from which branch of computer science did the 
concept of parallel computation get its impetus?  It wasn't 
the hackers or the engineers who first speculated that P<>NP.
-- 
Bob Matthews     ...!uunet!pirates!bobm
Armstrong State College, Savannah, GA

wilber@aludra.usc.edu (John Wilber) (09/28/90)

In article <409@pirates.UUCP> bobm@pirates.UUCP (Bobm Atthews) writes:

>John, there are alot of theoreticians out there who know alot about
>computers.  

I am sure there are some, but I have met only a few.  I know this is
difficult, but could you back up your claim?  My experience has been that
if someone tells me he has a PhD in CS, he probably knows all about
neural net theory, but couldn't write a hello world program and doesn't
know what a bus is.  Perhaps your experiences have been different.

>Just because someone has a concentration in one particular area
>of computer science does not mean he/she is a dolt in others.  

Agreed, but I would expect the same of history professors.  Having a PhD in
history doesn't make one an expert in computers either, though there 
are some historians who are quite adept at using them and even understanding
them.  The difference is that historians don't go around claiming to be
at the heart of computer science as an area of study.

>A good
>school makes certain that its graduates are proficient in the 
>important areas of computer science.

That sounds nice, but I have not seen it implemented in practice.  I would
assume that some schools (like CMU and MIT) must have some people around
who know something or they couldn't get any of their research projects
to work, but I have never seen any direct evidence that schools take anything
like an intelligent approach to teaching computer science.  Since IMHO
most CS professors don't have a good grasp of the important practical 
facts (there are exceptions of course) it is not surprising that students
do not learn the "facts of life" in school.

>>                    the textbooks I have seen have all been dismally
>>uninformed about the realities of computer technology (and even good
>>theory for that matter).

>Theory is *the* basis for all other branches in computer science: 

Again, that depends on how you define "computer science". If your definition
is "that which mathematicians qua computer scientists study", then of course
you are right by definition.  

>witness the usefulness of finite and push-down automata in designing 
>compilers and syntax directed editors, 

Sure, but which came first, the theory or the compilers?  I have "discovered"
new ways of doing things in programs many times before only to later
discover that someone had already given it some fancy theoretical name.
In any event, I agree that compilers and related things have been one of
the areas most directly impacted by straight theory.  I have written
a couple of compilers and the theory (once all of the theoretical trimmings
were removed) was indeed useful.  

Do you consider the creation of compilers to be a really important issue 
in computer science today?  How many programmers are out there writing 
compilers? How likely is it that any particular student in a class or 
ACM member will write one?

>the lambda calculus in 
>programming language design and study, 

I disagree about the "language design" part.  Languages can be designed
perfectly well without any knowledge of lambda calculus whatsoever.
As for the "study" part, I am sure many people have received research grants 
and degrees for studying lambda calculus, but I don't see it as anything
more than a minor curiosity.  It's not useless, but it doesn't deserve
to be considered a "center stage" subject.  The REAL reason it is studied 
so heavily is that it allows people to write papers with impressive 
mathematical symbols all over it and it doesn't require the consideration 
of real-world problems.

>complexity theory as the 
>motivator and prime driving force behind probabilistic and 
>approximation algorithms (used in network design, mathematical 
>software, operating system design, etc.)

Have you ever written an operating system?  Do you know what the real problems 
involved are?  Complexity theory may make some minor contributions, but
again, I think that mathematicians who spend their days extending 
complexity theory would be much more productive if they came down to earth 
and worked on solving practical problems.

>In terms of being "uniformed about the realities of computer 
>technology": from which branch of computer science did the 
>concept of parallel computation get its impetus?  

Probably from some guy who wanted to get faster results from his computer
and decided that hooking lots of them up at the same time would be a
good approach.  Perhaps you should be "informed" that paralell 
computation has a fairly small impact on real-world computing these days,
and that had all of the mathematicians mysteriously vanished in 1980, the
development of parallel computers would not have been set back noticeably.
(Who knows, maybe without them more work could have been done in making
them work rather than worrying about the theory;-).

>It wasn't 
>the hackers or the engineers who first speculated that P<>NP.

And it's not the mathematicians who write any of the programs that make
the technology work.  I doubt that many of them know or that ANY of them
care that P<>NP.  You can write anything you want without that knowledge.

It seems to me that it is much more important in academic "computer science"
that a problem can be expressed in big impressive-looking mathematical 
symbols than that the solution be useful for anything real.  That's a 
big problem in my book.

hugo@griggs.dartmouth.edu (Peter Su) (09/28/90)

In article <12235@chaph.usc.edu>, wilber@aludra (John Wilber) writes:
>I am sure there are some, but I have met only a few.  I know this is
>difficult, but could you back up your claim?  My experience has been that
>if someone tells me he has a PhD in CS, he probably knows all about
>neural net theory, but couldn't write a hello world program and doesn't
>know what a bus is.  Perhaps your experiences have been different.
>

As a graduate student in computer science, I am saddened by the fact
that someone who thinks he knows so much about computers knows so
little about computer science graduate students.  Let me name for you
a few people with CS PhD's...and a couple who have the equivalent...

1) Brian Ried -- Author of Scribe
2) Knuth -- Author of TeX
3) Bill Joy -- CEO of Sun Microsystems (he knows what a bus is).
4) John Hennesey -- did the MIPS work at stanford (he knows what a bus
is too).
5) Rick Rashid -- Head of the Mach project at CMU
6) Richard Stallman -- Author of Emacs, GCC, etc.
7) Dan Hillis -- designed the original Connection Machine.

The point?  You don't seem to know many good computer science PhD's.

>>Theory is *the* basis for all other branches in computer science: 
>
>Again, that depends on how you define "computer science". If your definition
>is "that which mathematicians qua computer scientists study", then of course
>you are right by definition.  
>

Both of these statements are narrow and misleading.  Computer science
is a unique field because it encompasses both mathemetical thinking,
and real, practical engineering.  Unfortunately, computer scientists
don't do either very well yet.  But, in order for a person to suceed
in this field, and in order for his/her research to be useful, it must
break ground in both areas.  It is not enough to ponder Turing
Machine's, but it not enough just to sit and hack C code either.  The
name of the game is to find out *how* Turing machines relate to C...

>Do you consider the creation of compilers to be a really important issue 
>in computer science today?  How many programmers are out there writing 
>compilers? How likely is it that any particular student in a class or 
>ACM member will write one?
>

Yes I do.  Current compilers stink.  Figuring out a way to do
compilers better would make a lot of people a lot of money.  Do you
really believe that the current generation of C/Ada/Pascal/Modula
compilers is all that is needed for all time?  We need compilers that
are smarter, faster, generate better code, and work with more
architectures.  If students are not writing compilers, they should be.

>I disagree about the "language design" part.  Languages can be designed
>perfectly well without any knowledge of lambda calculus whatsoever.
>As for the "study" part, I am sure many people have received research grants 
>and degrees for studying lambda calculus, but I don't see it as anything
>more than a minor curiosity.  It's not useless, but it doesn't deserve
>to be considered a "center stage" subject.  The REAL reason it is studied 
>so heavily is that it allows people to write papers with impressive 
>mathematical symbols all over it and it doesn't require the consideration 
>of real-world problems.
>


>>In terms of being "uniformed about the realities of computer 
>>technology": from which branch of computer science did the 
>>concept of parallel computation get its impetus?  
>>It wasn't 
>>the hackers or the engineers who first speculated that P<>NP.
>
>Probably from some guy who wanted to get faster results from his computer
>and decided that hooking lots of them up at the same time would be a
>good approach.  Perhaps you should be "informed" that paralell 
>computation has a fairly small impact on real-world computing these
days,

What planet are you from?  If parallel computing is so minor, why has
Cray made so much money in the past decade? Not to mention Thinking
Machines, BBN and the dozens of other companies building parallel
architectures that do huge amount of work for scientists all over the
country. There is more to CS than writing code for little toy PC's
like Macs, NeXT machines, and Suns.  Tell me what you know about real
machines... 

On the other hand, I'm not sure what P<>NP has to do with the whole
thing either.  Non-determinism is one of those theoretical toys that I
never quite understood.  I'm really not sure what it has to do with
parallel computation.  The theoretical work done on parallel
computation in the past has been pretty esoteric and mindless.  In
particular, this obsession with the PRAM type machine models is just
depressing.  PRAM will not tell you anything about the performance of
a particular algorithm in the real world because the primitives that
it assume just cannot be implemented as yet.


>
>And it's not the mathematicians who write any of the programs that make
>the technology work.  I doubt that many of them know or that ANY of them
>care that P<>NP.  You can write anything you want without that knowledge.
>
>It seems to me that it is much more important in academic "computer science"
>that a problem can be expressed in big impressive-looking mathematical 
>symbols than that the solution be useful for anything real.  That's a 
>big problem in my book.

People should care whether or not P=NP, because a lot of things that
people would like computers to be able to do are NP-complete (i.e.
scheduling, bin packing, register allocation).  If you don't know
this, go back and look it up.  It might save you a lot of time the
next time you have to hack something up and can't think of a good way
to do it fast (non-exponential time).  

I said it before, I'll say it again.  A programmer with no clue about
what CS theory is about is just about as useless to me as a
theoretician who can't hack C.  Both are missing essential tools that
they need to get the job done.  In the first case, theory might tell
the programmer something useful before he writes a lot fo code, and
thus save him a lot of time.  In the second case, knowing something
about programming might make the theoretician do more work that is
more concrete, and more implementable.

Back to work,
Pete
hugo@sunapee.dartmouth.edu

windley@cs.uidaho.edu (Phil Windley) (09/28/90)

In article <12235@chaph.usc.edu> wilber@aludra.usc.edu (John Wilber) writes:

   Sure, but which came first, the theory or the compilers?  I have
   "discovered" new ways of doing things in programs many times before only
   to later discover that someone had already given it some fancy
   theoretical name.  

That's exactly the point.  If you had known the theory you wouldn't have
had to rediscover it.  Are you really espousing a model for our discipline
that requires everyone to rediscover the important concepts each time.

Besides, the compilers (actually we're talking about parsers) written
before CFL's were studied were really not much fun to write.  Now there are
nice tools like YACC that do most of that drudgery for you.  Thank the
theoreticians. 

In a lot of ways, you're like a blacksmith in the late 1800's who sees
mechanical engineers encroaching upon his turf and says "I never needed no
calculus to shoe no horse.  That's all a bunch of high-falutin' mathematics
that don't have no practical application!"  He was right about shoeing the
horse of course, but dead wrong about the usefulness of mathematical
analysis in building mechanical structures.  (That's really what you're
railing against: mathematical analysis, not theory).

You'll probably go through your career feeling this way and probably die
feeeling you were right.  If I had to bet though, I'd say that 100 years
from now, your great grandchildren will be using mathematics in CS that you
haven't dreamed of.


--
Phil Windley                          |  windley@ted.cs.uidaho.edu
Department of Computer Science        |  
University of Idaho                   |
Moscow, ID 83843                      |  Phone: (208) 885-6501

matloff@heather.ucdavis.edu (Norm Matloff) (09/29/90)

In article <24755@dartvax.Dartmouth.EDU> hugo@griggs.dartmouth.edu (Peter Su) writes:


[I do agree with Peter's point, but just for the sake of accuracy...]


>little about computer science graduate students.  Let me name for you
>a few people with CS PhD's...and a couple who have the equivalent...

>2) Knuth -- Author of TeX

Ph.D. in Math, I believe.  There were none, or most *very* few, degree
programs in CS in his day.

>3) Bill Joy -- CEO of Sun Microsystems (he knows what a bus is).

I don't think he has a Ph.D.  He also is not CEO at Sun, though he is
a cofounder.

>4) John Hennesey -- did the MIPS work at stanford (he knows what a bus
>is too).

I think his Ph.D. is in EE.

>6) Richard Stallman -- Author of Emacs, GCC, etc.

Are you sure he has a Ph.D.?


Again, I do agree with Peter's point.  There is lots of practical work
done in academia.  On the other hand, the other poster is correct to
some extent  --  there certainly *are* some Ph.D.s in CS who "don't
know what a bus is."  I would assert, though, that the same holds
for a number of people in the Silicon Valley.

   Norm

norman@d.cs.okstate.edu (Norman Graham) (09/29/90)

From article <12235@chaph.usc.edu>, by wilber@aludra.usc.edu (John Wilber):
> In article <409@pirates.UUCP> bobm@pirates.UUCP (Bobm Atthews) writes:
> 
>>John, there are alot of theoreticians out there who know alot about
>>computers.  
> 
> I am sure there are some, but I have met only a few.  I know this is
> difficult, but could you back up your claim?  My experience has been that
> if someone tells me he has a PhD in CS, he probably knows all about
> neural net theory, but couldn't write a hello world program and doesn't
> know what a bus is.

I know this is difficult, but could you back up your claim (perhaps
with some hard data based on a sample set of more than a dozen)? My
experience is that most CS PhD's know nothing about neural net theory,
but they know, for instance, the issues involved in operating system
design; and they certainly do know what a bus is. You should avoid
such broad characterizations, especially when they are based solely
on your limited world view (which, btw, you seem to consider very broad).
 
> [...] I have never seen any direct evidence that schools take anything
> like an intelligent approach to teaching computer science.  Since IMHO
> most CS professors don't have a good grasp of the important practical 
> facts (there are exceptions of course) it is not surprising that students
> do not learn the "facts of life" in school.

Now you have me sitting on the edge of my chair. We're all now waiting
for you to describe your 'intelligent approach to teaching computer
science'. And while you're writing, please list a few of the 'important
practical facts' so we'll know what you're writing about. Who knows,
perhaps CS professors everywhere will see the light and learn something
about these issues.

But please remember that most universities do not intend to be high-tech,
high-dollar vo-tech schools with football teams.

>>witness the usefulness of finite and push-down automata in designing 
>>compilers and syntax directed editors, 
> 
> Sure, but which came first, the theory or the compilers? 

In this case (LR, LALR, SLR parsing that is), the theory came first.
Parsing was something of a black art before the theory came along.
Efficient parsing simply did not exist before theory showed us how
to do it.

> I have "discovered"
> new ways of doing things in programs many times before only to later
> discover that someone had already given it some fancy theoretical name.

Congratulations. Of course, theoretical study is much more than 
simply naming objects of discovery. For example, you may want to
actually <gasp> perform an analysis of your discovery to determine
what properties it may possess, why it possess those properties, and
when you can exploit those properties. Then write it up and delight
the world with your wisdom.

> In any event, I agree that compilers and related things have been one of
> the areas most directly impacted by straight theory.  I have written
> a couple of compilers and the theory (once all of the theoretical trimmings
> were removed) was indeed useful.  
> 
> Do you consider the creation of compilers to be a really important issue 
> in computer science today?  How many programmers are out there writing 
> compilers? How likely is it that any particular student in a class or 
> ACM member will write one?
 
I suppose you are saying 'compiler design is not a really important
issue in computer science, so only a very few people need study it.'
I believe that the study of certain subjects--such as compiler design, 
calculus, etc.--will give many students a maturity and insight that they 
would otherwise lack.

>>the lambda calculus in 
>>programming language design and study, 
> 
> I disagree about the "language design" part.  Languages can be designed
> perfectly well without any knowledge of lambda calculus whatsoever.

Yes they can; they have been for the last 30 years. It's best to have
in mind some model of computation when designing a new language. In the
past, that model has been the physical machine <gasp again>. This model
has lead to languages that have become increasingly complex. Each new
language includes most or all of the features found in previous languages
and adds new features to boot; but the expressive power of these languages
has hardly changed. The truth is the newer languages do not increase
program reliability or decrease programming costs enough to warrant their
adoption.

This sad fact suggests we need a 'new' model. Lambda calculus is one
such model.

> As for the "study" part, I am sure many people have received research grants 
> and degrees for studying lambda calculus, but I don't see it as anything
> more than a minor curiosity.

I suggest that you open your eyes; obviously you have not been keeping up
with language design issues (semantics of languages, computational models,
etc.) or with the implementation strategies for functional languages.

And before you brand functional languages as impractical or not applicable
to 'real-world problems' consider this: Functional languages and functional
programming are not sufficiently mature to warrant industry's en masse 
migration to them. But they have qualities that industry certainly will
be interested in. Many functional programs are 10, 20, or even 30 _times_
shorter than similar imperative programs. And due the clarity resulting
from their high-level nature, they are more reliable and easier to maintain.
When functional languages are adopted by industry (I guess in 5 or 10 years),
they will save millions or perhaps billions of dollars a year in software
costs. And of course, there are those who believe functional languages will
be the only practical way to take advantage of the parallelism available 
on massively parallel machines (>1000 processors). Most functional 
languages can be viewed as syntactic sugar on the lambda calculus.
Does lambda calculus still seem like a minor curiosity?

> It's not useless, but it doesn't deserve
> to be considered a "center stage" subject.  The REAL reason it is studied 
> so heavily is that it allows people to write papers with impressive 
> mathematical symbols all over it and it doesn't require the consideration 
> of real-world problems.

Now that is perhaps the most ridiculous statement I've seen in the netnews
in the last five years.

[more drivel on parallel machines deleted]
-- 
Norman Graham   <norman@a.cs.okstate.edu>   {cbosgd,rutgers}!okstate!norman
The opinions expressed herein do not necessarily reflect the views of
the state of Oklahoma, Oklahoma State University, OSU's Department of
Computer Science, or of the writer himself.

hugo@griggs.dartmouth.edu (Peter Su) (10/01/90)

In article <7746@ucdavis.ucdavis.edu>, matloff@heather (Norm Matloff) writes:
>In article <24755@dartvax.Dartmouth.EDU> hugo@griggs.dartmouth.edu (Peter Su) writes:
>
>
>[I do agree with Peter's point, but just for the sake of accuracy...]
>
>

Everyone is correcting me, so I thought I'd clarify what I said.  Here
is what I wrote:

>>little about computer science graduate students.  Let me name for you
>>a few people with CS PhD's...and a couple who have the equivalent...
			       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

I will admit to being mistaken about Jon Hennesey, EE is not the same
as CS.  But, he has done a lot of good work in both architecture and
in the more theoretical parts of compiler design, which illustrates by
point well.  

>Again, I do agree with Peter's point.  There is lots of practical work
>done in academia.  On the other hand, the other poster is correct to
>some extent  --  there certainly *are* some Ph.D.s in CS who "don't
>know what a bus is."  I would assert, though, that the same holds
>for a number of people in the Silicon Valley.
>
>   Norm

Something to add:  I think one should always remember Sturgeon's
Law...90% of everything is crap.  This applies to industry, academia,
computer science, engineering, and certainly goverment.  The best one
can do is try to stay within the other 10% most of the time.  I like
to think I do, but sometimes, I'm not so sure.

Pete
hugo@sunapee.dartmouth.edu

bond@geocub.greco-prog.fr (Johny Bond) (10/02/90)

In article <12235@chaph.usc.edu> wilber@aludra.usc.edu (John Wilber) writes:

> And it's not the mathematicians who write any of the programs that make
> the technology work.  I doubt that many of them know or that ANY of them
> care that P<>NP.  You can write anything you want without that knowledge.
		    ===============================

   I decided to reply to these three lines, but the main reason consist of the
preceeding 50 lines of your message ...

   As a theoretical computer scientist, I hope, not even one from our student
will make such an assertion ...


						J. Bond

=============================================================================
Laboratoire Bordelais de Recherche en Informatique
Universite Bordeaux I
351 Cours de la Liberation		e-mail : bond@nestor.greco-prog.fr
33405 TALENCE				fax    : (33) 56 84 66 65
FRANCE
=============================================================================

erspert@athena.mit.edu (Ellen R. Spertus) (10/02/90)

In article <24755@dartvax.Dartmouth.EDU> hugo@griggs.dartmouth.edu (Peter Su) writes:
>In article <12235@chaph.usc.edu>, wilber@aludra (John Wilber) writes:
>> My experience has been that
>>if someone tells me he has a PhD in CS, he probably knows all about
>>neural net theory, but couldn't write a hello world program and doesn't
>>know what a bus is.  Perhaps your experiences have been different.
>
>As a graduate student in computer science, I am saddened by the fact
>that someone who thinks he knows so much about computers knows so
>little about computer science graduate students.  Let me name for you
>a few people with CS PhD's...and a couple who have the equivalent...
[...]
>6) Richard Stallman -- Author of Emacs, GCC, etc.

Richard Stallman does not have a CS PhD.  I believe his only degree
is a bachelor's in physics from Harvard.

I do agree with your major point, though.  Certainly most people with
PhDs in computer science know how to program and know what a bus is.
I like to think most undergraduates learn these things --- I certainly
did.  Anyway, most CS PhDs (at least around here) are not in theory.
Most non-theory people spend a lot of time programming, and even the
theoreticians know some programming (at least TeX! :-).  Institutions
usually have a common core for all CS PhD candidates, probably all of
which include an architecture course and at least one course with
programming assignments.  John Wilber should check the curricula of CS
PhD programs if he wants to verify his claims.

Perhaps the key is "someone [who] tells me he has a PhD in CS".  The
PhDs that I know (and respect) don't press their credentials on others.
Usually it is the most insecure people who wave around their degrees.
(Didn't all of you know people in high school who would volunteer their
SAT scores in their first meetings with other people?)

					Ellen Spertus

wilber@aludra.usc.edu (John Wilber) (10/03/90)

In article <260@geocub.greco-prog.fr> bond@geocub.greco-prog.fr (Johny Bond) writes:
>In article <12235@chaph.usc.edu> wilber@aludra.usc.edu (John Wilber) writes:

>> And it's not the mathematicians who write any of the programs that make
>> the technology work.  I doubt that many of them know or that ANY of them
>> care that P<>NP.  You can write anything you want without that knowledge.
>		    ===============================

>   As a theoretical computer scientist, I hope, not even one from our student
>will make such an assertion ...

I don't doubt that as a CS theorist you would hope your students would not
make such assertions.  The IMPORTANT question is if it is true or not.
Are you trapped in such an ivory tower that you cannot tell (at least)
that this is not self-evidently false?  I stand by my earlier statement.

dovich@cadence.com (Steven J. Dovich; x272) (10/04/90)

In article <12235@chaph.usc.edu> wilber@aludra.usc.edu (John Wilber) writes:

> That sounds nice, but I have not seen it implemented in practice.  I would
> assume that some schools (like CMU and MIT) must have some people around
> who know something or they couldn't get any of their research projects
> to work, but I have never seen any direct evidence that schools take anything
> like an intelligent approach to teaching computer science.  Since IMHO
> most CS professors don't have a good grasp of the important practical 
> facts (there are exceptions of course) it is not surprising that students
> do not learn the "facts of life" in school.

Before knowledge can be passed on, it needs to be understood. Why are
these "facts of life" important?  Why not some other set of facts?
Are these facts a subjective list or is there some objective framework
that justifies their value?

"Facts of Life" are axioms, statements designed to completely
short-circuit analytical thinking. Their usefulness is in providing a
basis from which to reason about larger problems. We need to make sure
that there is really something fundamental about such "facts" before
we make them axioms. We need to be certain that these axiooms clarify
rather than cloud our understanding of the larger problems. Otherwise
they distract and mislead us.

> ...I have "discovered"
> new ways of doing things in programs many times before only to later
> discover that someone had already given it some fancy theoretical name.

If you reinvent technology that is already published, you have spent
your time unwisely. Familiarity with the relevant literature can
trim the design issues to that set without prior solutions. This is
yet another face of the popular concept of (software) re-use. Don't
re-invent the wheel.

> And it's not the mathematicians who write any of the programs that make
> the technology work.  I doubt that many of them know or that ANY of them
> care that P<>NP.  You can write anything you want without that knowledge.

You may be able to tackle a programming task without that kind of
knowledge. But for some problems, by the time you complete the task,
you will gain at least some of that knowledge (only we usually call it
experience). You probably won't solve the P=NP problem, but you will
have first-hand experience with the consequences of the answer to that
problem. 

And that is what theory is about. Solving fundamental problems so that
engineers can understand the concepts, and figure out what the
consequences will be (without having to learn it all from costly
experience). 

> It seems to me that it is much more important in academic "computer science"
> that a problem can be expressed in big impressive-looking mathematical 
> symbols than that the solution be useful for anything real.  That's a 
> big problem in my book.

There are probably very few who can effectively develop theory without
any application/practical framework to interpret the results. Most
theoretical work is started by someone with a practical problem to
solve. It is explored and developed by those who want to better
understand the implications of the problem, and its solution(s).  It
is applied to "real-world" problems by those who understand its
importance. 

In summary, theory is how we reason from past experience, to design
and build the future.

/sjd

--
Steven J. Dovich <dovich@cadence.com>
                                       Cadence Design Systems/ACAE Div.
                                       2 Lowell Research Center Dr
Phone: (508) 934-0272                  Lowell, MA  01852-4995

ariel@seer.UUCP (Catherine Hampton) (10/07/90)

I think Stallman's BA is from MIT, not Harvard.  At least, I know he attended
MIT in the early 1980's.

Cathy Hampton.

hampton@reed.EDU
ariel@seer.UUCP