[net.cse] Value of Computer Science degree

ka@hropus.UUCP (Kenneth Almquist) (02/08/86)

There has been a discussion in net.singles of all places about the value
of computer science degrees.  It started in <128@ttidcc.UUCP> when Jerry
Hollombe wrote:

> More seriously, I've met a wide assortment of programmers in the  last  few
> years  and  I  haven't  noticed  that  programming ability is significantly
> related to possession of  a  BSCS  degree.  Note  I  didn't  say  inversely
> related.  I said _not_ releated.

I will respond to one of the most recent articles:

> In article <3407@nsc.UUCP>, freak@nsc.UUCP (Curt Mayer) writes:
> > It has been my experience that CS professors haven't the foggiest idea what
> > the industry needs. [...]
> > A random hacker grade programmer of high school age is worth 5 brand new
> > CS degree-oids.
> > Note that ALL the awesomely hot programmers I know do not have degrees.
> 
> I don't know whether this is a joke or not.
> It is silly, but not very funny. It gives people the misleading
> impression that you can get far in computer science without anything
> but coding talent. This will be true for a very few. Or it will
> restrict you to working for banks and job shops.
> It's unlikely to get you working for Sun, Symbolics, Xenon,
> Teknowledge, Intellicorp, SRI,.......
> It's also an implied insult. Why do people write such things?
> 
> Peter Ladkin

I'm not sure I understand what Peter is getting at, perhaps not all
that familiar with the companies Peter lists.  Sun has done things like
porting UNIX to their machine and making various enhancements.  One way
to learn to do this is to read the UNIX kernel source code.  This will
take a little longer for someone who doesn't know anything about
operating systems when s/he starts; fortunately I started reading the
UNIX source code well before I started hacking the kernel.  Of course
there are people who are not capable of just sitting down and reading
the UNIX source.  Is there hope for such people, or are they doomed to
spend their days working for banks and job shops if they decide to
enter the profession?

When Peter disbarrages coding talent, he is probably using the word in
somewhat narrow sense.  Of course you cannot code a program effectively
unless you have some idea of how to design and structure a program; nor
does a person get to be a hacker grade programmer without learning
something about human interfaces.  "Coding talent" in a broad sense
covers everything that is required to write programs; if understood in
this sense, "coding talent" is what industry hires people for.  Is
compter science broader than this?

Yes, the article was an implied insult to CS professors since it implies
that they are rather useless, but that's no reason why the issues raised
should not be discussed.  My first college course was a graduate level
compiler construction course that I managed to sneak into.  Several
students in the course found it rather tough even though they had under-
graduate degrees in computer science.  So of what value is an undergrad-
uate CS program?  One answer is that it teaches a fair amount of
mathematics.  But what can it teach about computer science per se?  And
is this teachable to a person who won't pick it up fairly quickly if
given a UNIX system to hack on for a while?

Flame if you will, but try to put a little content in your flames.
				Kenneth Almquist
				ihnp4!houxm!hropus!ka	(official name)
				ihnp4!opus!ka		(shorter path)

john@frog.UUCP (John Woods, Software) (02/10/86)

> There has been a discussion in net.singles of all places about the value
> of computer science degrees.  It started in <128@ttidcc.UUCP> when Jerry
> Hollombe wrote:  [stuff not re-included]
> 
>> In article <3407@nsc.UUCP>, freak@nsc.UUCP (Curt Mayer) writes:
>>>It has been my experience that CS professors haven't the foggiest idea what
>>>the industry needs. [...]
>>>A random hacker grade programmer of high school age is worth 5 brand new
>>>CS degree-oids.
>>> Note that ALL the awesomely hot programmers I know do not have degrees.

A lot of random hacker grade programmers of high school age whom I've met
or been :-) are really, REALLY GOOD at optimizing the hell out of a bubble
sort.  Many of them just do not know about Order statistics, and those who've
heard of them don't know how to calculate them.  Raw brute force does best
when you have acquired skill and finesse in pointing it.  A CS education is
not the only place you can learn these things, but not learning them is a
severe deficiency.  (And CS 'educations' that don't teach tidbits like that
are criminally deficient!)

> > ...It is silly, but not very funny. It gives people the misleading
> > impression that you can get far in computer science without anything
> > but coding talent. This will be true for a very few. Or it will
> > restrict you to working for banks and job shops.
> > It's unlikely to get you working for Sun, [others...]
> > Peter Ladkin
> 
> I'm not sure I understand what Peter is getting at, perhaps not all
> that familiar with the companies Peter lists.  Sun has done things like
> porting UNIX to their machine and making various enhancements.  One way
> to learn to do this is to read the UNIX kernel source code.  This will
> take a little longer for someone who doesn't know anything about
> operating systems when s/he starts;

That is not the only problem.  Reading the UNIX kernel source will tell you
how UNIX does things, and give you ideas for how to distribute 'register'
declarations to help out those tight inner loops.  To implement ideas that
distinctly improve on how UNIX did something, you've got to have exposure to
alternatives, and a good feel for how to develop alternatives on your own.
Again, this is not a dark secret distributed only by Ministers of CS, but
a good CS program will include such things.

> 
> When Peter disbarrages coding talent, he is probably using the word in
> somewhat narrow sense.  Of course you cannot code a program effectively
> unless you have some idea of how to design and structure a program; nor
> does a person get to be a hacker grade programmer without learning
> something about human interfaces.[1]  "Coding talent" in a broad sense
> covers everything that is required to write programs; if understood in
> this sense, "coding talent" is what industry hires people for.[2]...
[1]  "Design and structure" encompasses a lot of things, many of which
     don't interest typical high-school hackers (I'm talking about much more
     that "Gotos Considered Harmful"-Versus-"Dykstra Considered Loony"...).
     And what was that crack about "Human Interfaces"?  Considering that the
     typical hacker programs largely for personal consumption, the human
     interface tends to be a bit scant...
[2]  If industry could always predict ahead of time what objects will
     definitely maximize whatever metric they are interested in at the time
     (programmers/"Coding Talent", investments/"return on investment", etc),
     there'd be fewer business failures.  None, even.
> 
> So, of what value is an undergraduate CS program?  One answer is that it
> teaches a fair amount of mathematics.  But what can it teach about computer
> science per se?  And is this teachable to a person who won't pick it up
> fairly quickly if given a UNIX system to hack on for a while?
> 
I think that the most important courses I took at MIT were 'Software
Engineering' (which showed me a philosophy of bullet-proofing code to
a greater extent than I'd been accustomed), 'Compiler Engineering' (when
taught by Prof. Hammer, whose motto was that "Computer Science is not a
science and has nothing to do with computers", whose course was not about
compilers but instead encouraged us to learn to think about them (I knew
the course would be different when he said the first lesson was to
sweep the lecture hall...:-)), and 6.033 (whose formal name I cannot remember,
but which was referred to as the "Course 6 (EECS) Book Report Course", and
was basically about SYSTEMS -- ranging from an Indian village to the 
Northeast Power Grid (with mention of computer systems thrown in here and
there).  This course exposed me to ideas I'd likely not have seen elsewhere,
and while only a couple of them have had direct applications in my work,
the methodology and maturation gained thereby has helped indirectly in just
about everything).

> Flame if you will, but try to put a little content in your flames.
> 				Kenneth Almquist

Well, I'm not so much trying to flame (probably a lost cause...), as trying
to give a different viewpoint.  Raw coding prowess is not enough, even though
it is a valuable and rare commodity.  A good CS education can (mind you,
can) enable such power to be used with a grace and understanding that will
move mountains (not crush them).  A poor CS education combined with no
coding talent, on the other hand, is the pessimal combination, and probably
is what gives CS degrees a bad name.

So, which is worse:  extremely fast, buggy code that does not do what you
want, or clean, elegant code that would do what you want if you could only
wait for it to finish...

--
John Woods, Charles River Data Systems, Framingham MA, (617) 626-1101
...!decvax!frog!john, ...!mit-eddie!jfw, jfw%mit-ccc@MIT-XX.ARPA

This space dedicated to Challenger and her crew,
Francis R. Scobee, Michael J. Smith, Ellison S. Onizuka, Judith Resnik,
Ronald E. McNair, Gregory B. Jarvis, and Christa McAuliffe.

"...and slipped the surly bonds of Earth to touch the face of God."

ladkin@kestrel.ARPA (02/11/86)

In article <256@hropus.UUCP>, ka@hropus.UUCP (Kenneth Almquist) writes:
> When Peter disparrages coding talent, [...]

I had not meant to disparrage coding talent. My words as quoted may
sound as if I had meant to.

> Yes, the article was an implied insult to CS professors since it implies
> that they are rather useless, but that's no reason why the issues raised
> should not be discussed. 

I agree, and refer interested parties to the net.singles 
discussion, which has recently become more mature than it was.
The discussion on this issue started when I responded to some
extreme comments such as
"CS degrees aren't worth the paper they're printed on", and
"CS Professors don't know anything about [...]"
I felt that if there were readers wondering about whether to
take courses to improve their abilities, these comments might
lead them to the wrong decision.
There are a number of important issues here, of which I shall
pick two:
1. How do we alter curriculum so that CS graduates become
better programmers?
2. How do we broaden the horizons of the kind of career 
systems programmers that make these extreme comments (and
believe them). There are many areas of computer science
that are only accessible to people with advanced degrees,
and some people in our industry seem to be, almost
deliberately, unaware of this. I had thought the
knowledge that Sun was started by academics to be
essentially universal, hence my choice of example.

Thanks to Ken for posting the discussion to net.cse,
and for drawing my attention to the change of venue.

Peter Ladkin

rb@ccivax.UUCP (rex ballard) (02/12/86)

Here is a basic theory:

CS programs are primarily concerned with ability to understand and adhere
to rigidly defined standards.  Furthermore, they teach 'canned algorythms'
and 'standard solutions'.  Most CS programs also seem to stress technical
writing, and technical programming.  I have actually worked with a student
who got a B on a program that did not accomplish the problem but was well
indented and documented.

BA programs tend to stress ability to think 'creatively', finding new
solutions to problems.  There is also a stronger tendency toward 'creative
and persuasive writing' in both written and verbal communications skills.
I got a B on a paper even though the grammer and spelling were bad, because
the arguments were effective and persuasive.

An MIT (BSEE) graduate once told me that some day, a program will be written
that solves all problems.  He was actually serious!  EE programs are really
'practical math' degrees.  A lot of time is spent doing proofs of things
like "DeMavre's Theorem".  A good engineer can mathmatically prove that
1+1=3.  If you want to know how many micro-seconds a search routine will
take, an engineer can tell you without running a profiler.

A BSCS will scientifically analize the problem, and use a scientifically
accepted solution.  A BSEE will engineer a solution (Top Down analysis
and implementation).  A BA will invent a solution (Bottom Up implementation).
A BA has the unique ability to start his analysis from just about anywhere.

More simply, a BSCS will make a detailed map of each tree, look at the map
and say "I'm in a forest", a BSEE will say "I want a forest, and forests
have trees, I'll look for trees.  A BA will look around, see a few trees,
and say "I must be in a forest".

The EE says 'get a bigger hammer', the BSCS says 'get a bigger saw'
and the BA says 'lets try a screw driver, lets try a wrench, lets try...'

A BA also likes to 'simplify things' conceptually (often leading to
oversimplification).  He is more concerned with the principles
specific implementation practices.  BSEE's can complicate a wet dream ;=}


A BA will actually have a stronger need for tools like indent, style, diction,
spell, lint and similar assistance from the computer, but will frequently
come up with more innovative solutions to a problem.  Ironically, personal
computers are needed and used most by BA types, because of the need for
personal organization.  This is in contrast to the BS types, who prefer
large mainframes or minis because of the extra 'Structure' imposed within the
system.  Accountants and BSCS types are nearly identical in their approach
to nearly everything.

Does this mean that any of these degrees is better than the others?
Every company has need for both types of people.  If the task is to
port UNIX to a specific machine, a BSCS or BSEE will be less likely to
take 'liberties' with the code, even IOCTL will work exactly.  If the
task is to define and implement level 4-7 X.25 layers (or something else
currently not standardized or well defined) in order to provide new
multi-processing capabilities, the BA will find an effective solution.

The worst situations for a company is to put BA's in the maintenence
positions (They will create by rewriting where a patch would do), or
put exclusively BSEE's and/or BSCS's in the R&D department.  Most
companies do this and it shows up in their P/L statements during
bear periods (when innovative solutions are most needed).

I have also read that BA's are more likely to advance to leadership
roles, and that BS's are more likely to advance to 'Consultant'
or 'Tech Specialist' roles.

The manager and perspective student should be aware of these traits.
Also, a student should probably not try to go against his natural
tendencies.  If you are naturally creative in some way, going for
a BS will be more difficult (lower grades, more frustration...) and
you may lose that 'Ah Ha' approach to solving.

As to whether one is better than the other, it just depends on what
you need done.

freak@nsc.UUCP (Curt Mayer) (02/13/86)

i think that i need to clarify some things, in light of much discussion

a hacker grade programmer is not some bozo who writes dreck for her/his
trash-80 at home. what i meant for this is a hacker has an intuitive,
rather than learned, grasp of mechanisms in general. Laura Creighton
pointed out, better than i can, that there is an Engineer mentality,
and a Mathematician mentality. The hacker has the former.

also, when i flamed CS profs, it was aimed mostly at every two-bit state
school who thinks that hiring failed DP professionals gives them a viable
CS department.  It makes no sense to pretend the problem does not exist.
schools like CMU, Stanford, UCB, MIT and GIT have a much better handle
on the problem, since they attract talent.

i know many damn good programmers with degrees, but none of them have
CS degrees.  I am sure that they exist. Most of the degreed Hot programmers
i know have fuzzy studies (Psychology, Philosophy, Education, etc) backgrounds.

Every hacker i know has read Knuth. it is, after all, the bible.

	curt

ladkin@kestrel.ARPA (Peter Ladkin) (02/14/86)

In article <3422@nsc.UUCP>, freak@nsc.UUCP (Curt Mayer) writes:

> [....] there is an Engineer mentality,
> and a Mathematician mentality. The hacker has the former.

Stereotypes always lend credence to a point.

> also, when i flamed CS profs, it was aimed mostly at every two-bit state
> school who thinks that hiring failed DP professionals gives them a viable
> CS department.  

Move to another state. 
Our Californian two-bit state schools hire Ph.D.s

> i know many damn good programmers with degrees, but none of them have
> CS degrees.  I am sure that they exist. 

Try your favorite top university, or the list of companies I gave,
or even a two-bit state school.

> Every hacker i know has read Knuth. it is, after all, the bible.

Right. And done all of the number theory problems, I suppose.
And they've all implemented many-sorted algebraic data types,
it's only Knuth-Bendix, after all.

Please, let's not turn this discussion into a Luddite revival.

Peter Ladkin

chen@gitpyr.UUCP (Ray Chen) (02/14/86)

In article <3422@nsc.UUCP>, freak@nsc.UUCP (Curt Mayer) writes:
> i know many damn good programmers with degrees, but none of them have
> CS degrees.  I am sure that they exist. Most of the degreed Hot programmers
>i know have fuzzy studies (Psychology, Philosophy, Education, etc) backgrounds.

I don't want to really jump in here, but let me point out that CS degrees
and good CS programs are young.  There are a lot of good programmers and
CS people around who don't have CS degrees because they got into the field
before such programs were established.

	Ray Chen
	gatech!gitpyr!chen

gds@eddie.UUCP (Greg Skinner) (02/17/86)

> From: rb@ccivax.UUCP (rex ballard)
> An MIT (BSEE) graduate once told me that some day, a program will be written
> that solves all problems.  He was actually serious!

Apparently, this was one of those MIT Course 6 people that "can't
program themselves out of a wet bag", because if they had learned
anything in their theoretical computer courses, they would have known
that such a program is mathematically impossible.  However, I could
excuse an MIT BSEE of such a statement, since they don't take all the CS
classes, but I would be surprised to hear a CS major say that.

> EE programs are really 'practical math' degrees.  A lot of time is
> spent doing proofs of things like "DeMavre's Theorem".

DeMoivre's Theorem, acutally.  I think it is debatable whether or not
someone should theoretically understand a concept and be able to apply
it in practical situations.  Most of the MIT undergraduate curriculum
(not just Course 6, but the entire engineering school) is based upon
teaching the theory of the subject and applying the theory in some
practical situations.  Of course all situations cannot be covered in the
classroom (like porting vax code to 68000's, since typically you do all
your assignments on a single machine).  However, there are programs
designed to give undergraduates exposure to solving practical problems
in both research and production environments.  The Undergraduate
Research Opportunities Program gives undergraduates the chance to do
research work in the lab groups of certain professors.  Many companies
have agreements with MIT to allow MIT students to do cooperative work
and research at the company, as part of a combined 5-year BS/MS program.

> A good engineer can mathmatically prove that 1+1=3.

A good mathematician can tell you that such a proof requires division by
zero, or some such incorrect assumption.

I'm not going to go into a long-winded flame about whether it is better
to have a degree or not to have one, or if people without degrees are
better, or what is important in getting a product out.  As the original
poster said, different companies need different individuals to do
different things.  I agree that programs that are written should be
fast, portable, etc. but I won't deny the importance of understanding
the principles behind sorting, code optimization, etc.

[Sorry for cross-posting to net.singles, but I wanted the people there
to see it too.]
-- 
It's like a jungle sometimes, it makes me wonder how I keep from goin' under.

Greg Skinner (gregbo)
{decvax!genrad, allegra, gatech, ihnp4}!mit-eddie!gds
gds@eddie.mit.edu

campbell@sauron.UUCP (Mark Campbell) (02/17/86)

> [Blah, blah, blah...]
>
>The EE says 'get a bigger hammer', the BSCS says 'get a bigger saw'
>and the BA says 'lets try a screw driver, lets try a wrench, lets try...'

Unfortunately, the objects which are being manipulated are usually a board
and nails in this case. (:-)
An EE really says "Yo, BA, use apostrophes in contractions and quotes for
quotes".  (Sorry)

>A BA also likes to 'simplify things' conceptually (often leading to
>oversimplification).  He is more concerned with the principles
>specific implementation practices.  BSEE's can complicate a wet dream ;=}
>                                    _____________________________________
> [Blah, blah, blah...]                    /
                                         /
                                       /
(Freud must have been a BSEE!) -------


I'd just like to say how informative I've found this entire discussion.
Over 90% of the volume has basically been an exercise in self-justification;
a bunch of people arguing that they have the BEST possible degree and that
anyone that doesn't have that degree is marginal at best.  It's not very
difficult to imagine the degree earned by the author of the above bullshi...,
uh, article.

My opinion?  Let's see, my degrees were in EE...
-- 

Mark Campbell    Phone: (803)-791-6697     E-Mail: !ncsu!ncrcae!sauron!campbell

eugene@ames.UUCP (Eugene Miya) (02/18/86)

<3422@nsc.UUCP> <1405@gitpyr.UUCP>

A comment from a person without a completed CS degree (I've math degrees)
formerly working toward a phd who's gone to bat for CS degrees.

The CS degree is a valuable degree.  It should not be a math degree or
a EE degree or anyother degree.  I've have taken on more than two assignments
where the people hiring me didn't want a programmer/hacker/CS person,
what THEY really wanted was a radar engineer, or XYZ jockey who happened
to know how to program.  Letters have been posted to the CACM saying they
wanted their CS people to have experience with chemistry, physics, and English.
Fine.  But some of these people really want physicists who know programming,
chemists who know programming, and so forth.

There is no one single problem to pin point.  The problems lie in
the political structure of universities (departments), the nature of
the teaching materials, what's taught and so forth.

First, CS degrees are important, but they are not math degrees.  I know
several mathematicians who would make terrible programmers.  Knuth wrote
an AMM paper last March I think on the differences.  Basically, the 
"fault" here can be found in early programming books where people believed
they knew how to program after reading a FORTRAN book (or Pascal, etc.).
This is not true, and it is where the CS major should be able to step in.
I learned to "program" years ago with learning about data structuring.
I learned about DS and their tradeoffs.  It was really neat to ask a
friend (physicist) who asked about sorting techniques [after giving
him a couple of simple choices]: have you considered trees?  No,
what are those?  Well, let me illustrate...  The CS major should
be able to help educate us old dogs.

Second, too many CS departments are wedded to the EE or math dept.
This is a historical trend which dates to the first CS departments
in the late 60s and early 70s but is still found in many smaller
schools such as the Cal State system (I've found).  Why create
a new department?  What biases are created.  One of the biggest
problem areas for the next 20 years for those math centered
departments will be the emergence of stronger experimental programs.
CS is not very empirical by it's structure and composition.
I've had some discussons with Denning (PJ) here about it.
He wrote two editorials.  Great.  Does someone teach an experimental
methods class in a CS department?  Let me know.

Also, many of the tools used to teach algorithms, programming, design
of compilers, OSes, etc. are too low-level.  We teach "top-down
programming" in a bottom-up fashion!

There are other biases and factors, and spoke of two as well as an important
reason for you guys to exist: education.  If you only could see the number
of highly paid programmers I have met who don't know what a stack is,
what semaphores (or rendevzous) are, why studying compilers are useful
for doing numerical methods, that languages and operating systems and
networks are merging.....   What's worse is when people such as
these get into positions of decision making. This is why CS majors should
exist.

From the Rock of Ages Home for Retired Hackers:
--eugene miya
  NASA Ames Research Center
  {hplabs,ihnp4,dual,hao,decwrl,allegra}!ames!aurora!eugene
  eugene@ames-nas.ARPA

g-rh@cca.UUCP (Richard Harter) (02/19/86)

In article <> eugene@ames.UUCP (Eugene Miya) writes:
>
>The CS degree is a valuable degree.  It should not be a math degree or
>a EE degree or anyother degree.  I've have taken on more than two assignments
>where the people hiring me didn't want a programmer/hacker/CS person,
>what THEY really wanted was a radar engineer, or XYZ jockey who happened
>to know how to program.  Letters have been posted to the CACM saying they
>wanted their CS people to have experience with chemistry, physics, and English.
>Fine.  But some of these people really want physicists who know programming,
>chemists who know programming, and so forth.
>
	Just a few words from someone senior (25 years in software).
Most programming jobs are application jobs -- you are getting the machine
to do something for somebody.  In most programming assignments the most
important things are to understand the application and understand the
users needs.

	Things like algorithms, data structures, languages, and 
operating systems are simply tools that you use to get done what it is
that you set out to do.  You have to know these things; they are your
basic stock of tools.  You also have to know where and how to look things
up.  You have to be able to invent or build these things if you need them
and they aren't available.

	You should also know how to learn an application area -- this
year you are working on a radar system, so learn about radar.  Next year
you might be processing chemical data; learn about chemical data.  Above
all, you need to know how to relate to the people that you will be working
for and with.

	There is no doubt that a CS degree is a valuable degree.  Today
they teach in the schools the things that we had to invent, often on the
fly.  The complaint in industry is that, all too often, people with CS
degrees know only the tools and don't know that they are only tools.
Too many don't understand applications, don't want to understand applica-
tions, don't know how to learn about applications, and don't want to learn.
Pity the poor radar engineer who hires the CS graduate who resists learning
anything about radar -- I've seen it all too often.

	Perhaps the answer is that there should be more software engineering
programs.  I don't know.  But it does seem to me that a lot of people who
taking CS are being fundamentally short changed.  Most people go to college
with the expectation that what they learn will be of value to them in their
future employment -- learn computers, and earn big bucks.  Well, that's OK.
But you get big bucks because you're valuable to someone who can pay big
bucks.  It would seem that part of your education should teach you what
it means to be valuable and how to be valuable.

Richard Harter, SMDS Inc.

ladkin@kestrel.ARPA (Peter Ladkin) (02/20/86)

I'm reposting fragments of the net.cse discussion to net.singles,
in order to encourage interested parties to join us there. This
message contains nothing new for net.cse people. 
If you read net.singles, and you're wondering about further
education in CS, you'll want to be in on this.

In article <6282@cca.UUCP>, g-rh@cca.UUCP (Richard Harter) writes:
> In article <> eugene@ames.UUCP (Eugene Miya) writes:
> >
> >The CS degree is a valuable degree.  It should not be a math degree or
> >a EE degree or any other degree.  [....]
>
> 	Just a few words from someone senior (25 years in software).
>     [........]
> 	There is no doubt that a CS degree is a valuable degree.  Today
> they teach in the schools the things that we had to invent, often on the
> fly.  The complaint in industry is that, all too often, people with CS
> degrees know only the tools and don't know that they are only tools.
> Too many don't understand applications,
> tions, don't know how to learn about applications, and don't want to learn.

stan@drilltech.UUCP (Stan Hanks) (02/24/86)

There seems to be a common thread of misconception involved in this 
discussion. Namely, that all BSEE's or BSCS's or random BA's are plug-
compatible within their discipline. This is patently not the case.

What is of value in your education -- technical or otherwise -- is that
it gives you some ablility to use your mind to solve your problems. In
the CS arena this most often means (1) knowing the "classical" solutions
to certain types of problems [generalizes to "don't re-invent the wheel"],
(2) knowing enough theory to give yourself a better understanding of the
principles involved in the problem at hand [generalizes to "if you do 
re-invent the wheel, don't give it 5 sides"], (3) having the ability to 
go off and actually attempt to solve your problem [generalizes to "know 
where the tools are so you at least don't have to re-invent them too"].

In my book, your degree has no intrinsic quality or value; it is a statment
that you attended university X and performed well enough not to be expelled.
The value of this attendance is directly proportional to your ability to
perform in a satisfactory manner -- and how much of this you gleaned for
yourself as opposed to have been force-fed in class.

It is my experience that the formal education process leading to degrees
is in general worthless unless the individuals involved are interested
enough in the subject to go off and learn more on their own.

My credentials? BA in EE/CS, minor in Art History, graduate work in CS.


Stan Hanks
Senior Research Scientist
Teleco Oilfield Services, Drilling System Technology

ladkin@kestrel.ARPA (Peter Ladkin) (02/25/86)

In article <18@drilltech.UUCP>, stan@drilltech.UUCP (Stan Hanks) writes:
> 
> There seems to be a common thread of misconception involved in this 
> discussion. Namely, that all BSEE's or BSCS's or random BA's are plug-
> compatible within their discipline. This is patently not the case.

We have all agreed that they're not. There has been some
discussion as to whether they *should* be. There's no misconception.

> In my book, your degree has no intrinsic quality or value; it is a statment
> that you attended university X and performed well enough not to be expelled.

What about a 4.0 gpa from Princeton or somewhere?

> It is my experience that the formal education process leading to degrees
> is in general worthless unless the individuals involved are interested
> enough in the subject to go off and learn more on their own.

It's very hard to get a 4.0 from a good school without being
interested and motivated. 
And if someone could do that, think of what they could do when 
they find problems they're interested in!

Peter Ladkin

rb@ccivax.UUCP (rex ballard) (02/26/86)

In article <612@sauron.UUCP> campbell@sauron.UUCP (Mark Campbell) writes:
>Over 90% of the volume has basically been an exercise in self-justification;
>a bunch of people arguing that they have the BEST possible degree and that
>anyone that doesn't have that degree is marginal at best.

From the BA:

My intention was not to say that a BA is BETTER than BS or EE, only that

1: A good team should have ALL THREE TYPES.  The BA might come up with
	some good stuff, but the BS will define the problems clearly, and the
	EE can make it fast/and or bullet-proof (as needed).  The BA also
	makes a good buffer/interpreter between engineering and marketing.
	By the way, there are "creative BS and EE people" too!

2: If you have certain talents, don't go against them because you think
	you need a certain degree.  Find a program that will help you
	build your strengths, and help you compensate for your weak
	areas.  It is possible to go against the grain, but more
	rewarding in the long run to go with it.

The most important thing for anyone in this field is the ability to LEARN.
In an industry where "state of the art" changes twice a year, and anything
over 10 years old is obsolete, it is critical to be able to spend a lot
of time reading and staying up to date, rather than watching the TV at
night.  College teaches you the discipline of unsupervised, self-directed
study.  Some people are able to do that by the time they graduate from
high school, they should go to college anyway.  Bill Gates may have written
Microsoft BASIC when he was in high school, but you can bet he's had to
get at least the equivelent of a degree to manage todays Microsoft.

Much of the first tirade came from knowing that there are a few companies
who exclude BA's from developement teams.

A good example of the BA/BS relationship comes from the film industry.

Before the shooting starts, the director, a BA, has the lighting crew
adjust the lights (he must know their terminology) until it looks
right.  Then the Cinimatographer, an EE, cranks all the lights back
up.  The director has the ability to see the finished product in his
mind before it has even been started.  The director knows what he wants
it to look like, the EE knows how to make it look that way on film and
TV.  The EE knows how to get the best depth of field, the best
modulation, the best picture.  The same goes for the sound crew.

mangoe@umcp-cs.UUCP (Charley Wingate) (02/26/86)

I'd like to amplify a couple of things Eugene Miya said, and also add some
comments of my own based upon my experience in the workplace.

Here at Maryland, due to the curious division/college structure, the CS
department is totally independent of either the Math department or the
Engineering College.  It's also an important factor that the engineering
department academic programs are very programatic, whereas those of Math and
CS are rather free-form.  This has tended to divorce the CS and engineering
camps completely.

While this set-up has a lot of advantages as far as the independence of the
departments are concerned, it in practice leads to some problems.  One is
that the engineering college (and indeed, many departments across campus)
has its own programming courses, which, unless a student takes a
double-major, are likely to be the only programming courses he takes.
Things may have changed somewhat, but my experience has been that these
courses have always been years behind the times.  When I was a "first-aid"
consultant, we always saw six year old handouts and use of obselete software
as a consistent pattern in these courses.  None of these engineers were
taught any languages besides Fortran and (very bad) assembly, and little or
nothing about data structures was ever taught.

The end result of this is to produce a lot of "programmers" who really don't
know what they are doing.  This was especially true when I worked for a
defense laboratory.  At the time, it was almost impossible for Civil Service
to hire CS people: they could not pay enough, and the job classifications
caused a lot of problems.  I was in only because with my second major in
Math, I could be classified as a mathematician.  This meant that almost all
the programmers were engineers.  And these people were not just writing
stress analysis programs either; they wrote realtime applications and huge
simulations programs.  The latter were generally monuments to ignorance,
because those who wrote them had no idea about data structures or algorithms.

When I moved on to a private employer, a similar situation reigned.  At the
time, this company was hiring its first real CS people, except for one or
two who had been around for some time.  They had written two very large
personnel programs, both of which had some good ideas, but which tended to
brute force and which had been patched to death.  I came on board during the
construction of a third, which, although it contained a number of good
ideas, was hamstrung by a bad requirement on the part of the customer (who
had been told that the decision was going to cause trouble) to use a
particlar DB package, and by the presence of too many people who didn't know
anything about data structures, structured programming, or algorithms.  As a
result, the project remains under a cloud.

It seems to me that what you want is someone with the spark and flare of a
"hacker", but who has computer science education, and who can work in a
coordinated fashion with others.  There are far too many hackers whose CS
education is minimal; there are many many more who can only go off and work
in a corner by themselves.  In this respect, it seems clear to me that
courses in software engineering ought to be part of CS curricula, and they
should include group projects.

Well, that's my opinion.

C. Wingate

wex@milano.UUCP (02/27/86)

In article <3367@umcp-cs.UUCP>, mangoe@umcp-cs.UUCP (Charley Wingate) writes:
> It seems to me that what you want is someone with the spark and flare of a
> "hacker", but who has computer science education, and who can work in a
> coordinated fashion with others.

Are Universities producing hackers these days?  When I was at UPenn, I was
disappointed to see how the hacker community was shrinking.  In the classes
before mine ('84), there were 10-12 hackers in each class.  In my year there
were about 7, the year after maybe 5, and I didn't see any after that.  At
the same time, the number of CSE majors was increasing, the number of people
taking CS courses was skyrocketing, the quality of the staff, faculty and
facilities were all increasing...

I wonder if there are any new hackers being produced these days.  Has something
happened in the colleges or in society to cause this drop?  Certainly the
rewards are still there (and are even greater in most cases).  But where are
the hackers?

Note, there are still many good programmers, theoreticians, etc. coming out,
but that spark that Charlie mentioned seems to be gone.

-- 
Alan Wexelblat
ARPA: WEX@MCC.ARPA
UUCP: {ihnp4, seismo, harvard, gatech, pyramid}!ut-sally!im4u!milano!wex
"No wife, no horse, no mustache."

mc68020@gilbbs.UUCP (Tom Keller) (03/01/86)

In article <1046@milano.UUCP>, wex@milano.UUCP writes:
> Are Universities producing hackers these days?  When I was at UPenn, I was
> disappointed to see how the hacker community was shrinking.  In the classes
> before mine ('84), there were 10-12 hackers in each class.  In my year there
> were about 7, the year after maybe 5, and I didn't see any after that.  At
> the same time, the number of CSE majors was increasing, the number of people
> taking CS courses was skyrocketing, the quality of the staff, faculty and
> facilities were all increasing...
> 
> I wonder if there are any new hackers being produced these days.  Has something
> happened in the colleges or in society to cause this drop?  Certainly the
> rewards are still there (and are even greater in most cases).  But where are
> the hackers?
> 
> Note, there are still many good programmers, theoreticians, etc. coming out,
> but that spark that Charlie mentioned seems to be gone.
> 

   Hackers can only develop in an environment that is conducive to individual
activity and non-structured persuit of self-determined goals.  The current
atmosphere in most CS programs, and at virtually *ALL* college and university
computing centers is not thusly conducive.  In many cases, such acticities
are actively and viciously discouraged.


   Access to resources is becoming more and more limited (see related articles
re: 'billing' practices), while freedom in the academic area is becoming less
available. 

   In essence, the mantle of respectability has fallen upon the CSci arena,
thus raising up the push for conformity.  Too put it bluntly, it stinks!

-- 

====================================

tom keller
{ihnp4, dual}!ptsfa!gilbbs!mc68020

(* we may not be big, but we're small! *)

ladkin@kestrel.ARPA (Peter Ladkin) (03/01/86)

In article <3367@umcp-cs.UUCP>, mangoe@umcp-cs.UUCP (Charley Wingate) writes:
> [...] it seems clear to me that
> courses in software engineering ought to be part of CS curricula, and they
> should include group projects.

Agreed, and they are all too rarely. Group programming is possible
without a special course. Students in my compiler and OS courses
are encouraged to work in groups. The projects are stiff enough that
they have to.
I have long been puzzled as to what should be in a software
engineering course. It shouldn't just be Programming Methods N
(for large N) else it will bore teacher and student alike.
My favorite current candidate is Specification. There is 
much more to this than I had realised before I worked with
(and designed) specification languages. 
Many of the problems are general enough to attract anyone's
attention.

A sample:
Is first order logic an adequate specification language?
(Traditional verification vs Gordon's HOL hardware
verification examples).
Are algebraic specifications adequate for Abstract Data Types?
Does one need some set theory?
Pick a problem - what is the most abstract specification of
this problem? Is there one? Does it generalise?
Pick an area (e.g. time modelling). How does one model
temporal information in a given setting?
(Temporal Logic, Interval Calculi, First order axiomatisations).

These issues are not at all theoretical. I am currently
working in an environment which allows me to define
functions assertionally (with a fragment of first order
logic and set theory) or procedurally. I have designed
a time calculus, and can implement it using transformations
from intervals to sets, defined assertionally. I would 
also claim (with theorems to back it up) that in a precise
sense the time calculus is most general for countable
time modelling (and who cares about higher infinities
for applications).
I am an experienced logician, therefore I have been used
to specifying in first order logic. I nevertheless found
that finding good specifications of problems in computer
science was a subtle art that could be as difficult as
you could wish for.
I also know that most of my students, even the good ones,
lack the ability and training in specification that I wished
they had. I used to think a training in logic was adequate,
but now I believe the problem is more general.

I would appreciate suggestions for extending my sample
list above. I would prefer a curriculum oriented to
mental problem-solving, since I believe that in ten years
our software engineering environments will be much more
sophisticated, and somewhat similar to the one in which
I currently work. In such an environment, training in
*abstract* specification is likely to be much more
important than having programmed a large editor in Pascal
10 years before.

Peter Ladkin

aglew@ccvaxa.UUCP (03/02/86)

Just a comment about EEs vs. CSs:

I was one of the first EEs at McGill to start taking "Honours" Computer 
Science courses. The School of Computer Science, which was very theoretical,
discouraged me from taking their courses because I didn't have the necessary
math background. I think they underestimated how much math an EE takes.
The "Honours" Computer Science courses were jokes.

The next year an "advanced" computer science class in filesystems and 
databases was opened up for the first time to engineers. It was taught by
a visiting European professor, very theoretical, very mathematical. On
the first in-class test, the marks distribution was bimodal: CSs around
30%, EEs around 80%. Same thing in a Discrete Math course - the CS students
complained that they were being asked to solve new problems that they couldn't
just look up in the literature. 

By the time I left school, the School of Computer Science had once again 
started providing special courses "adapted to the needs of engineers" 
taught by second-rate professors and teaching assistants.

Rigour is not the exclusive preserve of CSs, nor does creativity solely belong
to BAs. Most engineers chose to become engineers because they have this 
wonderful hard-to-articulate need to BUILD something. I became a programmer
because systems are what I'm best at building, but my friends who became 
power engineers and microwave engineers did so because that's where their 
creative skills lay (I think the microwave engineers also like modern art).

As for hackers - look for any small, underfunded, computer lab that has
a resident undergraduate flunking his courses while he learns the machine.
Trouble is, if he flunks too many courses, he gets expelled - the universities
are still, literally, <<turning out>> hackers.

lamy@utai.UUCP (Jean-Francois Lamy) (03/03/86)

In article <25@gilbbs.UUCP> mc68020@gilbbs.UUCP (Tom Keller) writes:
>   Access to resources is becoming more and more limited (see related articles
>re: 'billing' practices), while freedom in the academic area is becoming less
>available. 

Huh? I see immense improvements in the first area (a PC a person for intro.
courses is an improvement over cards... and many places have sufficient
computing power to use cycle and memory hogs like Ada and Common Lisp --
even grossly underfunded canadian universities).  As far as academic freedom
is concerned, I see no essential difference.

>   In essence, the mantle of respectability has fallen upon the CSci arena,
>thus raising up the push for conformity.  Too put it bluntly, it stinks!

You have to realise that students now are much more conservative than a few
years ago.  They can't party all the time and still rest assured to find a
job...  Their motivations for entering Computer Science programs are certainly
different from mine 6 years ago.





-- 

Jean-Francois Lamy              
Department of Computer Science, University of Toronto,         
Departement d'informatique et de recherche operationnelle, U. de Montreal.
CSNet: lamy@toronto       UUCP: {ihnp4,utzoo,decwrl,uw-beaver}!utcsri!utai!lamy
EAN: lamy@iro.udem.cdn    ARPA: lamy%toronto@csnet-relay

ebh@bentley.UUCP (Ed Horch) (03/05/86)

In article <25@gilbbs.UUCP> mc68020@gilbbs.UUCP (Tom Keller) writes:
>In article <1046@milano.UUCP>, wex@milano.UUCP writes:
>> I wonder if there are any new hackers being produced these days.  
>> Note, there are still many good programmers, theoreticians, etc. coming out,
>> but that spark that Charlie mentioned seems to be gone.
>> 
>   Hackers can only develop in an environment that is conducive to individual
>activity and non-structured persuit of self-determined goals.  The current
>atmosphere in most CS programs, and at virtually *ALL* college and university
>computing centers is not thusly conducive.  In many cases, such acticities
>are actively and viciously discouraged.

First, I'd like to thank these two for reminding us that the term "hacker"
is not the obscenity the news media has tried (with a lot of success) to
turn it into.

I associate the term "hacker," in its good connotation, with tenacity,
single-mindedness, and a desire to finish what one starts.  Although
these qualities do develop on an individual basis, they can still be
applied in a group environment.  It is this point that the colleges fail
to recognize.

I started programming at age 12, and got my first paycheck for it at 17.
I have attended two colleges, and will attend a third starting this fall.
(Obviously, I do not have a degree.)  At the first two schools, one a
respected private university in the Midwest, the other a state school
in the Deep South, this "you do it OUR way" attitude was prevalent.

At the first school, this was okay, since their curriculum taught the
kinds of things that, six years later, I now apply every day.  At the
second, however, they taught FORTRAN, COBOL, Assembly, you know what
I mean...  There wasn't one full professor in the entire computer
science department.  Was I crazy for quitting out of boredom and frus-
tration?  ("Are there any keypunches free?  Oh, the machine's down?")

This fall I'm going to try again.  To be honest, I don't expect to learn
anything about software there either, but I may learn something in
another field, like English.  But I figure that maybe the no-degree
stigma may finally be removed.  Put another way, I want the piece of
paper.  Also, a university is populated with people closer to my own
age, whereas my coworkers are usually just finishing grad school at
my age.  I don't agree with the way the system works, (my father, whose
income mine exceeds by 50%, still thinks I'll never amount to anything...)
but it never asked my opinion, so I have to play by its rules.

Then, maybe I'll amount to something.  :-(

-Ed Horch