[net.cse] What should CS teach?

elg@usl.UUCP (Eric Lee Green) (09/20/86)

Summary:
Expires: 
Sender: 
Reply-To: elg@usl.UUCP (Eric Lee Green)
Followup-To: 
Distribution: 
Organization: USL, Lafayette, La.
Keywords: CS, CE, EE, Math, business, humanities (GASP!). 

<line eater fodder>

A brief list of what some institutions offer as the emphasis of their
CS degree:

Math: These curriculums place a heavy emphasis upon mathematics, with
math generally as the minor. The BS people generally end up doing
"scientific programming" (computer-aided numeric analysis).  People
with a graduate degree generally disappear into research institutions,
publish a few papers which few ever read, and are never heard from
again.

EE: These are your "CS with a CE minor" curriculums. You'll probably
find the graduates of this school hacking Unix kernals, programming
digital parts of devices like disk drives and printers, and otherwise
filling their particular niche. These are the guys who implement the
fancy ideas that the Math people think of. Where you see a computer
being designed, you see these people hard at work.

Business: Your "IBM shops". These schools teach IBM-style Software
Engineering and Database Management courses, Forms Entry Systems/User
Interface Design, and other exciting courses. The minor is usually
Business Administration or Accounting. These are the folks who work in
the back room of Texaco for 4 or 5 years before they move on into
middle management.  This is also the largest group of programmers
(commercial programming).

The above is quite stereotypical, but I think it demonstrates three
mindsets which prevail in the CS arena.

So, what should be taught?

First of all: I believe that at the BS level, one should not be a
expert in one particular area. That is the purpose of grad school.

  1) One should study digital electronics to the point of knowing
how to design simple microprogrammed CPUs etc. And, enough analog
electronics to know what a resistor and a transistor are. Perhaps the
amount of training that an Army electronics tech would get. A
one-semester course for the analog part would suffice, and could be
easily handled by college freshmen with no higher math skills (after
all, if the Army can do it with the scum of the earth who barely made
it out of high school...).

Circuit analysis etc. are not necessary for a computer scientist. He
is not going to design the circuits. He is only going to write the
programs that interface to the circuits. Understanding what a PLL does
is trivial. Any TV tech with 18 weeks worth of training can understand
what a PLL is. Understanding how to design it is a job for EEs.

2) Math: Some knowledge of higher mathematics is, indeed, quite useful
(as I have said before). Topics in set theory, etc. come in handy, not
to mention that Turing machines etc. cannot really be divorced from
the mathematics that produced them. However, I really can't see the
point of taking years of differential equations, linear algebra, and
other topics in numeric analysis that would seldom be used by a
programmer. Someone mentioned performance analysis. Well, I don't
think your average BS/CS would be involved in such things. Grad school
is the place for specialization.

3) Accounting: I'm about to preach heresy. Your CS course should have
a couple of accounting courses in it. And maybe an introductory
management course.

My brother and I are running a small business out of our P.O. box to
pay tuition and save up for an Amiga, and the Accounting course I took
has been extremely useful.

4) English and History: I always enjoy literature courses, although I
like reading too much to enjoy tearing the author apart in a critical
essay. Being literate has its advantages. 

History: it is nice to know a bit about the world around you, and
history is one way of learning about that world. If you hear about
some Arab country threatening to blow you up, it's nice to know where
that country is, if only to avoid it like the plague. Of course, my
liking for these courses may also be attributable to the fact that I
always make A's and B's in such classes.


The CS courses: I'll leave this part of the curriculum for you to fill
in.  Anybody else have ideas for what should be in the "ideal"
undergraduate BS degree? The CS vs. CE wars are getting old real
quick.

-- 

      Eric Green {akgua,ut-sally}!usl!elg
        (Snail Mail P.O. Box 92191, Lafayette, LA 70509)

" In the beginning the Universe was created. This has made a lot of
 people very angry and been widely regarded as a bad move."

barbaraz@tektools.UUCP (Barbara Zanzig) (09/24/86)

In article <929@usl.UUCP> elg@usl.UUCP (Eric Lee Green) writes:
[...]
> 3) Accounting: I'm about to preach heresy. Your CS course should have
> a couple of accounting courses in it. And maybe an introductory
> management course.
> 
> 4) English and History: I always enjoy literature courses, although I
> like reading too much to enjoy tearing the author apart in a critical
> essay. Being literate has its advantages. 
> 
> History: it is nice to know a bit about the world around you, and
> history is one way of learning about that world.

I have a feeling these suggestions are going to create quite a discussion!

I would add to the English requirement: lots and lots of English
composition.  I see English lit. as helping develop a well-rounded
person, but I've found my writing skills indispensable to my work.  I
took 2 semesters of regular English Comp. plus a term of Technical
Writing, and I still would like to take a refresher every couple of
years or so just for the discipline and critiques.

Whether you intend to go into CS research or industry, what they don't
tell you in school is that a lot of the "real world" job is writing -
everything from reports and memos to articles, proposals,
specifications, procedures, and just about any other kind of document
you could think of.

--
Barbara Zanzig
{allegra, ihnp4, decvax, ucbvax, zehntel, ...}!tektronix!tektools!barbaraz

gtf@gatech.EDU (George Fulton Jr.) (10/04/86)

In article <1598@tektools.UUCP> barbaraz@tektools.UUCP (Barbara Zanzig) writes:
>In article <929@usl.UUCP> elg@usl.UUCP (Eric Lee Green) writes:
>[...]
>> 3) Accounting: ...
>> 
>> 4) English and History: ...
>
>I have a feeling these suggestions are going to create quite a discussion!
>
>I would add to the English requirement: lots and lots of English
>composition.  I see English lit. as helping develop a well-rounded
>person, but I've found my writing skills indispensable to my work.  I
>took 2 semesters of regular English Comp. plus a term of Technical
>Writing, and I still would like to take a refresher every couple of
>years or so just for the discipline and critiques.
>
>Whether you intend to go into CS research or industry, what they don't
>tell you in school is that a lot of the "real world" job is writing -
>everything from reports and memos to articles, proposals,
>specifications, procedures, and just about any other kind of document
>you could think of.
>

The English and History requirments are probably a standard part of the
core curriculum at almost every school regardless of major.  But for
a computer scientist technical writing is a neccesity (and maybe a 
good course in public speaking?)  I don't know how many technical
people I have seen who couldn't communicate their ideas (no matter
how good the ideas are) to others.

As far as the accounting courses go: these have no place in a computer
science program.  Maybe they belong in a data processing program geared 
toward business applications.  However, as an undergraduate, I did take
a couple of accounting courses (by choice) and I have found them very
useful in everyday life.  As a matter of fact, I consider the tax course
to be the most useful course I took and I would recommend this course
to anyone who plans to submit a tax return to the IRS.  (Maybe this
will change with the new tax plan, but I don't think so.)

Tom Fulton
School of Information & Computer Science, Georgia Tech, Atlanta GA 30332
CSNet:  gtf @ GATech	ARPA:	gtf%GATech.CSNet @ CSNet-Relay.ARPA
uucp:	...!{akgua,allegra,hplabs,ihnp4,linus,seismo,ulysses}!gatech!gtf

elg@usl.UUCP (Eric Lee Green) (10/08/86)

In article <4613@gatech.EDU> gtf@gatech.UUCP writes:
>
>In article <1598@tektools.UUCP> barbaraz@tektools.UUCP (Barbara Zanzig) writes:
>>In article <929@usl.UUCP> elg@usl.UUCP (Eric Lee Green) writes:
>>> 3) Accounting: ...
>>> 4) English and History: ...
>>
>>I have a feeling these suggestions are going to create quite a discussion!
>>
>>I would add to the English requirement: lots and lots of English
>>composition.  I see English lit. as helping develop a well-rounded
>>person, but I've found my writing skills indispensable to my work.  I

>good course in public speaking?)  I don't know how many technical
>people I have seen who couldn't communicate their ideas (no matter
>how good the ideas are) to others.

>As far as the accounting courses go: these have no place in a computer
>science program.  Maybe they belong in a data processing program geared 
>toward business applications.  However, as an undergraduate, I did take
>a couple of accounting courses (by choice) and I have found them very
>useful in everyday life.  

Agreed. Accounting isn't computer science, it is one of those things
like history or English which is very VERY useful in The Real World...
for example, right now I am running a small business, and if I hadn't
taken some Accounting courses, I'd have a much bigger problem figuring
out what my profits, losses, expenses, etc. were...
-- 

      Eric Green {akgua,ut-sally}!usl!elg
        (Snail Mail P.O. Box 92191, Lafayette, LA 70509)

" In the beginning the Universe was created. This has made a lot of
 people very angry and been widely regarded as a bad move."