Why aren't we all speaking LISP now?

Mitchell Morris mitchell.morris at cingular.com
Thu May 10 08:26:31 EDT 2001


kzaragoza at mediaone.net (Kris J. Zaragoza) wrote in 
<slrn9fk32l.rbe.kzaragoza at kzaragoza.ne.mediaone.net>:
[snip]
>I think there is, generally speaking, a fundamental misunderstanding
>of what Computer Science really is all about.  It's not about building
>faster chips or writing lots of programs.  It is the study of what can
>be computed and how those computations can be performed.  This makes
>Computer Science an interesting mixture of both applied mathematics
>and engineering (with a bit of psychology thrown in for AI and user
>interface work).  This may be an oversimplification; there are many
>different fields of study within Computer Science.  It does, however,
>describe the gist of things: Computer Science is a science.  It is
>theoretical and academic by nature.  Conveniently, it also has many
>real-world applicable results.
[snip]
>
>-Kris

I'd just like to start by saying "me, too" to this sentiment.

First, let me state my biases up front, in that I (eventually) graduated 
with a degree in Mechanical Engineering having never set foot in the CS 
school. At this point, I've been either a professional software developer 
or manager of developers for 19 years now, so I hope that my lack of 
academic CS credentials won't be held against me by the audience.

In my unspeakably arrogant opinion, Computer Science should be taught and 
approached as a science, with the intent that CS grads will be prepared to 
advance the body of knowledge. If there was a degree about applying the 
research performed by CS types, it *should be* in the engineering school. 
That is, there *should be* a Software Engineering program, which would 
teach how to apply the concepts of CS to building actual things.

For example, as a Mechanical major I was required to take a one semester 
class on material science. In material science, I studied things like 
crystalline structures in metals, how grains form in materials and what 
annealing does to the grain structure, structural differences between 
plastic and elastic materials, etc. At the same time, I was required to 
take three separate classes on selection and use of materials to build 
stuff. For example, in the junior design class you would be expected to 
design-for-construction a mechanical device, selecting the base components 
from one of the many materials handbooks we customarily carried about, and 
explain why you selected titanium pushrods instead of steel where you would 
be expected to natter on about force transmission, weight savings versus 
cost savings, safety factors, etc, etc, etc.

To belabor the point, engineering (as taught at S.Carolina) was about 
applying knowledge, not advancing science. If you really wanted to know why 
titanium has those physical properties, you would have majored in Physics. 
If what you wanted to know was how (and when) to use titanium versus steel 
versus composites for structural components, then you would major in 
Engineering.

Applying the analogy, Computer Science should be about things like 
computability, undecidability, P=NP, formal proofs, etc ... all designed to 
acquire raw knowledge that we don't already have. Software Engineering 
should be about learning that there is a large body of knowledge and how to 
solve real problems using that body of knowledge.

[rant about people calling themselves Engineers (even Software ones) 
without having taken the FE exam first elided]

jeremiads-r-us-ly y'rs,
+Mitchell



More information about the Python-list mailing list