From: dal3@cbnewsg.cb.att.com (dale.e.parson)
Subject: Re: Advice needed on relevance of Computer Science Classes/Major.
Organization: AT&T
Date: Tue, 12 Jan 1993 17:03:53 GMT

In article <1itclaINNch0@usenet.INS.CWRU.Edu> am893@cleveland.Freenet.Edu (Michael Hauben) writes:
>
>
>I would like to be able to study and contribute to the new
>field of computer networking and telecommunications.
> 
>Is Computer Science a valuable major as an undergraduate
>student? Or is it at most *training* for a job?
> 
>Data Structures
>Discrete Math
>Fundamental Algorithms
>Software Design Laboratory
>Computer organization
> 
>lead to the  possibility of taking
> 
>Operating Systems
>and
>Computing Networks
> 
>I have already taken Introduction to Computer Science /
>Programming in the Scheme dialect of Lisp, and a 1-point C
>programming language course.
> 
>What I would like to know, from those both currently in the
>major, and those working outside of academia in the computer
>industry, is if the computer science major is worthwhile. If
>it does represent an education and not just a training?
> 
>I am currently trying to figure out my approach for
>determining my major. So, any help or advice would be
>appreciated.
> 
>        Thanks,

Determining a major depends as much on aptitude and enjoyment for the
field as it does upon economic value (although the latter is very
important too). I'll assume you like designing software and have shown
some promise. The quality of the major depends upon your school's dept.
and on the program of study that you & your advisor work out. You should
have an aptitude for mathematics to succeed in this field, & assuming
you do, my advise is the following:

1. Get a good dose of mathematical logic ('predicate calculus'), set
theory & function theory somewhere in your undergrad.

2. Make sure to take core advanced CS courses that cover computational
complexity (probably a course in analysis of algorithms), also courses
that cover formal grammars and automata (a course in compiler design
typically covers some of this).

3. Although you needn't formally do a minor, pick a general application
area & take as much as you can there. Most software engineers wind up
having to know as much about their application area as they do about
computer science. If you have a general application area planned--you
mentioning networking & telecom--maybe some electrical engineering courses
or physics courses in electricity & electronics, perhaps even a communications
dept. course that uses some of these technologies. If I were
planning to do biomedical or genetic engineering related computing, I'd
take lots of biology--probably physiology & anatomy for the former,
genetics for the latter.

4. Take as much math as you can (can stand, can do reasonably well).

That probably just about fills up an undergrad. If you do an undergrad
major like this then a CS degree should be worthwhile. Coming out JUST
knowing CS stuff is not enough for some jobs, but if you have an application
area that you like & have some background in its terminology & concepts,
& have lots of math (the ability to turn a specific problem into a more
abstract, formal one is the key to writing robust, flexible software, and
this is primarily a mathematical activity), then the CS degree is worthwhile.

Some schools have too much of a *training* emphasis, but probably of
equal danger is over-concentration on CS-only issues without understanding
how to apply these CS concepts in the world. It is applied mathematics.

Dale Parson, Ph.D., Bell Labs
Xref: sparky comp.edu:2283 ba.general:5521