From: mdchaney@fractal.ucs.indiana.edu (M Darrin Chaney)
Subject: Re: Computer Science Programs
Organization: Indiana University, Bloomington
Date: Tue, 18 Aug 1992 17:26:46 GMT

In article <1992Aug18.030000.21291@athena.mit.edu> solman@athena.mit.edu (Jason W Solinsky) writes:
>He refers to my point that an MIT major in 18C (Theoretical Computer Science)
>need only learn scheme and that a 6-3 person need only learn Scheme and CLU
>(A C-like language). He believes that this is bad because as a result, MIT
>6-3 graduates won't be well prepared to work in the "real world" :-) :-) :-)

I could bring up the example of the girl who coded a loop in C like this:

myproc()
{
  lines_o_code;
  myproc();
}

Seems she couldn't understand why it was running out of memory.  When someone
explained that she was overflowing the stack by continually calling the
procedure over and over again, she said, "Oh, I thought tail recursions
were implemented as goto's".

I'm sure that not everybody who comes out of such a program is like that, but
it's been my experience that a large number are ill-equipped to work in the
real world.

On the other hand, if you go to a school where you learn languages only, you'd
be as well off going to a trade school.  And even _more_ ill-equipped.  I've
met plenty of these kinds of people who couldn't implement a bubble-sort
without looking in a book.

There is a fine central point where a person knows theory, but can write
real programs, and learn new languages, as needed.  These are all
necessary skills.  As has also been mentioned, the ability to write a nice
user interface and these other fine points is also necessary.

Alot of the time, a certain amount of creativity is needed to make a nice
interface.  However, those things are sometimes dictated to you, and you
just write the program "to spec."

I guess the bottom line is, no amount of CS will teach you everything you
need to know.  It's an area where you go to school to learn how to learn.
I learned about 80% of what I know on my own.  I didn't discover Scheme until
my fourth year (and 3rd college).

At first, I was unimpressed.  Our prof was showing us how "neat" the
language was, and how easy it was to do things with Scheme.  The unimpressive
part was that the "things" were rigged, in a way.  It was kinda like saying
"This golf club is excellent for everything" when in fact we were just hitting
golf balls.  It wouldn't work as smoothly for baseballs, and I wanted to
whack some baseballs.

The thing that impressed me, though, was that the things that it was
excellent at, it was *really* excellent at.  However, I wouldn't write
an OS in it, because abstract data structures aren't as nice when you have
to deal with hardware.  That's a pity, too, in a way.  In the same way, I
wouldn't write a spreadsheet, a database application, or alot of other
real world type things in it.  But, if I had to write a compiler, I don't
think I'd consider anything but Scheme.

I've heard the argument that if you learn CS in that way, you can easily
learn any language in x hours, and other such things.  That may be true for
some people, but certainly not everybody I've met.  I know plenty of people
who can't grok C, but have written some of the bitchin'est Scheme programs
ever.  The bottom line is, one of those two languages will get you a job.
For the slow learners: "it ain't Scheme."

Anyway, as I see Computer Science, you should be able to learn the language
part of it on your own.  I know something like 9 languages now, and
learning new ones has always been easy.  That includes 3 or 4 assembly
languages, and things like Fortran, BASIC (yick, I think I've worked with
three different ones), Pascal (yick again), C, Logo (not just the turtle
side!), Scheme and Lisp (and, I like Scheme *alot* better), COBOL (yick-ola),
and wierd languages like TPU (DEC's editor language), Ingres ABF/4GL, and AWK.
That's not meant to be bragging.  There are plenty of people who know
more languages than that, and I think it's safe to say that nobody needs to
know more than 2 or 3, anyway.

Of those, I learned maybe four in the classroom.  Even in those cases, most
of the learning was done by writing my own programs.  I've found that people
who don't do well in classes generally don't have any motivation to write
programs on their own.  That lack of motivation is crippling.

Anyway, it's not worth arguing about.  I'm on the fringe of the real world.
I'm finishing up college, and debating with myself whether I want to get a
PhD in CS, or in something else.  At this point, I'm extremely interested
in both neural networks and genetic algorithms.  These things are definitely
more interesting than any real world application that I've some across yet.

I've worked both in a research type environment and the real world (where
I'm at now).  Research is funner to me, but I'm making money now :)  That's
important when you have student loans to pay off.

I'm interested in other people's views, though, and Jason has started a real
thread here.  Just don't turn it into a flame-war.  Note that I generally
write from the real world point of view because that's where I'm at.  Dan
Friedman, Mr. Scheme himself, told us to enjoy it while we could, because
we'd soon be out of school, and using some language like C.  That summed
it up for me.

	Darrin
-- 

mdchaney@iubacs mdchaney@bronze.ucs.indiana.edu mdchaney@rose.ucs.indiana.edu

"It's a marvel of vegetable containment..."
Newsgroups: soc.college,comp.sys.mac.programmer,misc.education