From: sl31+@andrew.cmu.edu (Stephen M. Lacy)
Newsgroups: comp.os.os2.advocacy,comp.os.ms-windows.advocacy
Subject: Re: The sin of MicroSoft
Date: 10 Jan 93 03:19:36 GMT
Article-I.D.: andrew.cfI29cm00iUz00yONH
Organization: Junior, Math/Computer Science, Carnegie Mellon, Pittsburgh, PA

Excerpts from netnews.comp.os.os2.advocacy: 10-Jan-93 Re: The sin of
MicroSoft by Bill Poitras@west.msi.co 
>  
> Pete Skelly (petesk@microsoft.com) wrote:
> : Most people in the core of computer science tend to think things like
> : "address space" or "processing speed" are all computers are.  They study
> : algorithms and logic in order to build more powerful machines designed
> : to help in the study of algorithms and logic.  A lot of them are stuck on
> : ideas on how to make a computer do more than one thing at a time, but have
> : absolutely no idea what those things are.  It wasn't until recently that
>  ...
> I agree that computer science in the commercial world is getting wrapped
> up in things that are just the surface of computer science.  I think
> this is partly due to the education system.  I have a BS in computer
> science, and I remember that most classes taught me how to program, how
> to break apart a problem and solve it in a specific language.  Others
> even taught me a little bit about certain technologies like compilers and


Ok, I think that maybe you guys aren't up on the current state of
Computer Science Undergraduate Studies.  I'm a third year student in
computer science here at CMU, and this is what I've been through so far:

[Begin quote from CMU's Undergraduate Catalog]

15-211: Fundamental structures of Computer Science I 
    Fundamental programming concepts are presented together with
supporting theoretical bases and practical applications.  This course
emphasizes the practical application of techniques for writing and
analyzing programs: data abstraction, program verification, and
performance analysis.  These techniques are applied to algorithms on
linear data structures.

15-212: Fundamental structures of Computer Science II
    The course continues the presentation of fundamental programming
concepts begun in 15-211, focusing on mechanisms for the execution of
programs.  Basic notations of computability and implementation
techniques for emulation between disparate models of computation are
studied, along with advanced data structures.  This course also
introduces and uses the Lisp programming language

15-381: Artificial Intelligence - Representation and Problem Solving
    Intelligent computer programs can solve problems, understand natural
language, even reason about their actions, and learn from experience. 
They do these things by manipulating internal symbolic representation. 
The course will cover the main types of symbolic knowledge
representation and the main techniques for planning and problem solving.
 LISP, a computer language designed for symbolic programming, will be
taught during the course, and there will be a required programming
project in LISP.

15-462: Computer Graphics
    This course provides an introduction to hardware and software for
vector and raster graphics systems.  Topics covered include
representation of two- and three-dimensional ofjects, geometric
transformations, interactive techniques and hidden surface elimination. 

[End quote from CMU's Undergraduate catalog]

Ok, here come the clinchers.  15-211 was basically an introduction to
data structures class, with a little more thrown in.  We learned "Big
Oh" notation, every strain of finite automata you could imagine (NFA,
DFA, etc. etc.)  Also, we touched on compiler design and parsing by
writing a "micro-C" compiler, assebler, and a program to run our
'assembly' code.  But wait, the language used was "C" YET IT WAS NEVER
TAUGHT IN THE COURSE.  Thankfully, I knew C fairly well already, but for
those of you who didn't, they were screwed.  Some made it through, but
not a whole lot.

15-212 doesn't sound so bad, except for the same clincher that came with
15-211, we're using Scheme, BUT WE'RE NOT GOING TO TEACH IT TO YOU. 
(Scheme is a dialect of Lisp)  By the end of this course we wrote a
metacircular evaluator.  What this is, is a program that says "Implement
Scheme in Scheme" without using the (eval '...') expression.  We also
covered completeness, and all that stuff (what does 'NP' stand for
again?)

Artificial intelligence was pure theory.  We had one progrmming
assignment in Lisp, which was to re-write the huristic function for
Tic-Tac-Toe so that it was better than it currently was.  This
assignment was VERY early in the course, and I think because no one knew
Lisp (we had all learned Scheme) he dropped the rest of the programming
assignments.  We did just about everything in AI problem solving thats
been done.  Pure theory.

15-462: Computer graphics.  Now, assuming that you've already learned
everything yourself, we're going to let you use what you've learned. 
"Using any computer and any programming language, and any operating
system you wish, implement the following...."  2D transformations, 3D
trans., 3D projections, Ray-tracers, particle systems, splines,....must
I go on?

Please, give us more credit than you are.  Things have changed a lot in
the last few years.

"Emma, please stop chewing on my purple love seat."