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