[net.cse] Role of computer science

g-rh@cca.UUCP (Richard Harter) (09/23/86)

Tom Keller writes:
>
>    ....  I have merely pointed out that
>    the training needed to be a good programmer is *NOT* the same as the
>    training needed to be a (good) Computer Scientist.  You can rant and
>    rave all you like about people without formal training who have developed
>    good software, or succeeded in the commercial software market, it doesn't
>    change my point at all.  Without the theoretical foundations laid by
>    Computer Scientists (and their associates, mathematicians and EEs) the
>    "programmers" wouldn't have anything to work with.  It remains the
>    theoreticians who lead the way in the development of new computing
>    technology and methodology.
>
	Er, ah, I hate to break it to you, but this simply isn't so.
Programming very much came first; the early programmers developed the
principles of programming pretty much ad hoc.  The theoretical foundations
were developed after the fact.  It would be much more accurate to say that
the theoreticians *are becoming* the leaders in the development of new
computing technology and methodology.

	This is the normal situation with technology and science.
Until World War II science had surprisingly little impact on technology
(with the exception of Chemistry).  The reason is fairly straightforward;
in its earlier stages technology depends on rough and ready constructs
and a lot of empirical knowledge.  The corresponding science is inadequate
because not enough is known about the processes involved to provide
theoretical explanations of the phenomena.

	In the case of programming, the significant developments all
preceded the rise of computer science, which was very much an after
the fact occurence [and is still somewhat mired in the identity search
syndrome.]  Concepts (and implementation) of ideas such as databases,
operating systems, higher order languages, and data structures were
brought into being by programmers.  It should be noted, however, that
the early programmers were not "graduates of programming schools";
they had highly varying backgrounds with a predominence of Mathematics
and Engineering.
-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

tiemann@mcc-pp.UUCP (Michael Tiemann) (09/24/86)

In article <10202@cca.UUCP>, g-rh@cca.UUCP (Richard Harter) writes:
> Tom Keller writes:
> >    Without the theoretical foundations laid by
> >    Computer Scientists (and their associates, mathematicians and EEs) the
> >    "programmers" wouldn't have anything to work with.  It remains the
> >    theoreticians who lead the way in the development of new computing
> >    technology and methodology.
> >
> 	Er, ah, I hate to break it to you, but this simply isn't so.
> Programming very much came first; the early programmers developed the
> principles of programming pretty much ad hoc.  The theoretical foundations
> were developed after the fact.  It would be much more accurate to say that
> the theoreticians *are becoming* the leaders in the development of new
> computing technology and methodology.
> 
> 	In the case of programming, the significant developments all
> preceded the rise of computer science, which was very much an after
> the fact occurence [and is still somewhat mired in the identity search
> syndrome.]  Concepts (and implementation) of ideas such as databases,
> operating systems, higher order languages, and data structures were
> brought into being by programmers.  It should be noted, however, that
> the early programmers were not "graduates of programming schools";
> they had highly varying backgrounds with a predominence of Mathematics
> and Engineering.
> -- 
> 
> Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
> 	For Cheryl :-)

	Er, ah, I hate to break it to you, but the theoretical
foundations were well in place before the programmers got there.
Recursion and induction (two very powerful programming techniques)
were well in place from centuries ago. The notion of an algorithm
existed before electricity was even understood. Church invented
the Lambda Calculus almost 20 years before LISP existed, theorem-proving
systems of Gentzen preceded AI, and Kleene had a number of formal language
results before the first compiler existed.

	The reason that Computer Science *seems* like a new field is
because it can be so closely related to other existing fields such as
Algebra, Logic, and Analysis. It is true that along the way
programmers have made their contribution to the field of the science,
but the real question that people in the field of Computer
Science/Engineering must ask themselves is whether we want to depend
on the fact that programmers will stumble their way to the truth as
they have so far, or whether we can create a discipline whereby the
path can be made to reveal itself.

	Your note that early "programmers" were not graduates of
programming schools, but mathematicians. To quote Robert Frost (I
think) "... and that has made all the difference." THEY hal the
discipline, the deeper understanding to write programs where none had
been written before. To take a curriculum of programming without also
understanding the formal foundations is to be just another software
tool.

Michael
tiemann@mcc.com

mc68020@gilbbs.UUCP (Thomas J Keller) (09/24/86)

  Richard Harter points out that the original work done in the area of
computer methodology was not, in fact, done by "Computer Scientists" but
by the early programmers.  True enough.  MY error.

  Many of the early programmers were, however, very much theorists in
Mathematics.  Some of them were Engineers.

   I believe that my separation of Computer Science and Programming into two
distinct, if slightly over-lapped disciplines remains essentially valid.  I
have been informed that this identifies me as an "inflexible ego maniac."
Oh well.

   
-- 

Disclaimer:  Disclaimer?  DISCLAIMER!? I don't need no stinking DISCLAIMER!!!

tom keller					"She's alive, ALIVE!"
{ihnp4, dual}!ptsfa!gilbbs!mc68020

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

edwards@uwmacc.UUCP (mark edwards) (09/25/86)

In article <1729@mcc-pp.UUCP> tiemann@mcc-pp.UUCP (Michael Tiemann) writes:
>In article <10202@cca.UUCP>, g-rh@cca.UUCP (Richard Harter) writes:
>> Tom Keller writes:
>> >    Without the theoretical foundations laid by
>> >    Computer Scientists (and their associates, mathematicians and EEs) the
>> >    "programmers" wouldn't have anything to work with.  It remains the
>> >    theoreticians who lead the way in the development of new computing
>> >    technology and methodology.
>> >
>> 	Er, ah, I hate to break it to you, but this simply isn't so.
>> Programming very much came first; the early programmers developed the
>> principles of programming pretty much ad hoc.  The theoretical foundations
>> were developed after the fact.  It would be much more accurate to say that
>> the theoreticians *are becoming* the leaders in the development of new
>> computing technology and methodology.
>> 
>> 	In the case of programming, the significant developments all
>> preceded the rise of computer science, which was very much an after
>> the fact occurence [and is still somewhat mired in the identity search
>> syndrome.]  Concepts (and implementation) of ideas such as databases,
>> operating systems, higher order languages, and data structures were
>> brought into being by programmers.  It should be noted, however, that
>> the early programmers were not "graduates of programming schools";
>> they had highly varying backgrounds with a predominence of Mathematics
>> and Engineering.
>> -- 
>> 
>> Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
>> 	For Cheryl :-)
>
>	Er, ah, I hate to break it to you, but the theoretical
>foundations were well in place before the programmers got there.
>Recursion and induction (two very powerful programming techniques)
>were well in place from centuries ago. The notion of an algorithm
>existed before electricity was even understood. Church invented
>the Lambda Calculus almost 20 years before LISP existed, theorem-proving
>systems of Gentzen preceded AI, and Kleene had a number of formal language
>results before the first compiler existed.

    I beleive the roots of Lambda Calculus can be traced farther back
 then that. People like liebnitz (sp ?) and others from the 12th -14th
 century. And the notion of artificial intelligence to the same period
 by I think Raoul (sp ?). One of my prof's showed my Computational
 Linguistics Class a reference in Latin from a book from that period.
 The words Artificial Intelligence were clearly distinguishable, even
 though it was Latin.
    The main problem with most Computer Scientist is that they tend
 to re-create the wheel, meaning they don't know about or ignore previous
 research or ideas (unless they see it in a recent Magazine or Journal).
 Thus we have people with the notions as stated in the above articles.

  If anyone wants I can look up the actual dates and names in my notes.

  mark
-- 
    {allegra, ihnp4, seismo}!uwvax!uwmacc!edwards
    UW-Madison, 1210 West Dayton St., Madison WI 53706

g-rh@cca.UUCP (Richard Harter) (09/27/86)

>
>	Er, ah, I hate to break it to you, but the theoretical
>foundations were well in place before the programmers got there.
>Recursion and induction (two very powerful programming techniques)
>were well in place from centuries ago. The notion of an algorithm
>existed before electricity was even understood. Church invented
>the Lambda Calculus almost 20 years before LISP existed, theorem-proving
>systems of Gentzen preceded AI, and Kleene had a number of formal language
>results before the first compiler existed.

	Some of them, only some of them.  Numerical analysis existed
before computers; mathmematical logic existed before computers.  But
a lot of stuff didn't and the stuff that did wasn't always formulated
in a relevant form.  For example:

Nowadays we design algorithms using general principle, e.g. greedy
method, divide and conquer, and all that.  Today I would expect
that someone who was trained in modern methods could create the
FFT (Fast Fourier Transform) as a classroom exercise; I remember
when the FFT was first developed -- it was a real bombshell.  It was
also very mysterious.

To repeat:  HOL's were very much an ad hoc invention.  I know about
formal languages; I knew about them in 1961 when I started programming,
and, believe me, they had very little to do with most programming.
As Dijkstra observes, pre-computer logic was atemporal.  Mathematicians
did a great deal of twisting to force computer programming into the
terms of classical recursion, induction, and formal logic.

Data structures are mostly a modern invention;  I also remember when
hash coding hit the streets -- there were people who felt that hash
coding was somehow illegitimate.  Somebody had to invent B-trees
you know.  The whole concept of data structures is new.

Fundamentally, you can do things with computers that could never be
done before and the things that you can do are constrained by factors
that are not at all apparent without the experience of programming
computers.

>
>	The reason that Computer Science *seems* like a new field is
>because it can be so closely related to other existing fields such as
>Algebra, Logic, and Analysis. It is true that along the way
>programmers have made their contribution to the field of the science,
>but the real question that people in the field of Computer
>Science/Engineering must ask themselves is whether we want to depend
>on the fact that programmers will stumble their way to the truth as
>they have so far, or whether we can create a discipline whereby the
>path can be made to reveal itself.
>
>	Your note that early "programmers" were not graduates of
>programming schools, but mathematicians. To quote Robert Frost (I
	Agreed.  The time of the programmer making fundamental discoveries
by ad hoc experimentation is past.  When you don't know anything
muddling about is a great way to learn something -- better than
detailed analysis based on radically insufficient data.  But the
'muddle about' approach only takes you so far and then you go nowhere
slowly.

	I do suspect, however, that there is a tendency in Academia
to pay insufficient attention to what can be learned from the experience
of practicising programmers, but that is another matter.  Premature
theorization has been the bane of many sciences.

>	You note that early "programmers" were not graduates of
>programming schools, but mathematicians. To quote Robert Frost (I
>think) "... and that has made all the difference." THEY had the
>discipline, the deeper understanding to write programs where none had
>been written before. To take a curriculum of programming without also
>understanding the formal foundations is to be just another software
>tool.
>
>Michael
>tiemann@mcc.com

Well, actually, we wrote some pretty garbagy programs in the old days.
[Unlike what's done, today :-)].  I'm not sure what you mean by "the
formal foundations" though.  You can write some pretty good software
without knowing anything about the lamda-Calculus.  But it is pretty
hard to learn about writing good software without knowing a lot about
how software is put together.  Let me tell a story:

Many years ago I knew a hot programmer.  He was good; he could take a
problem and produce a working program that got good answers in short
order.  However he did have one idiosyncrasy -- he didn't use subroutines.
Everything was all in one big Fortran program.  The day came when one
of his twenty thousand line specials blew the compiler -- symbol
table overflows all over the place.  So he did what people told him
to do; he split it up into subroutines.  He divided the program in
half and made a 10000 line main program and a 10000 line subroutine.

Now my contention is that, nowadays, you can't be a 'good software tool'
without a good grounding in theory.  A lot of the stuff we did in the
old days just doesn't cut it today [er, ah, oh well -- I wish that were
a true statement.]  But my opinion is that we could do with a lot less
'computer science' and a lot more 'software engineering'.  Don't get me
wrong -- computer science is interesting and valuable.  But software
engineering is also interesting and valuable, and a lot of people who
are taking CS degrees should be in SE.  Enough.


-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

g-rh@cca.UUCP (Richard Harter) (10/01/86)

Tom Keller
>
>  Richard Harter points out that the original work done in the area of
>computer methodology was not, in fact, done by "Computer Scientists" but
>by the early programmers.  True enough.  MY error.
>
>  Many of the early programmers were, however, very much theorists in
>Mathematics.  Some of them were Engineers.
>
>   I believe that my separation of Computer Science and Programming into two
>distinct, if slightly over-lapped disciplines remains essentially valid.  I
>have been informed that this identifies me as an "inflexible ego maniac."
>Oh well.
>
	Well, this inflexible ego maniac agrees with you.  I would go
further and say that there three distinct disciplines, based on the
issue of where one's professional loyalties lay:

(a)	The applications programmer whose loyalties lay with the
	application.

(b)	The professional programmer whose loyalties lay with
	programming itself.

(c)	The computer scientist whose loyalties lay with computer
	science.

The difference between the three lies in where their focus of interest
lies.  Since I wear, or have worn, all three hats, let me give some
examples.

As an applications programmer working for an employer on a large project
I identified with the subject area (Geophysics in one case) and the
needs of the employer.  The focus of my efforts was on certain
specific problems in applied geophysics; numerical analysis and
computer programming were simply tools to use.  The objective was to
meaningfully process data.

As a professional programmer (a person making a living writing software)
my focus was on improving my skills -- learning more about how to
write programs efficiently and effectively.  Now improvement in my
skills as a programmer was of value in my role as an applications
programmer, but the objective was different.  This makes for a
conflict.  For example, as an applications programmer I might well
say "At this point I need such and such algorithm; let me look it up
in a book, code it, and get on with it."  Unless efficiency were an
overwhelming concern, I wouldn't even be terribly interested in doing
a super whiz bang job of it -- the algorithm and the code implementing
it are simply tools to use for the real job.  As a professional 
programmer whose interest lies in programming per se, my focus would
be on the algorithm and the code that implements it their own right.

As a computer scientist (a hat I will only lay modest claims to)
my focus is still different -- I am asking things like, "How do 
programs get written?  What has to be done to write programs?
What kind of programs can be written?".  I am looking for general
principles.  This is, in turn, a generalization and refocusing of
my concerns as a professional programmer.

To put it simple terms:

(a)	The application programmer looks up a sort algorithm in
	a book and writes it.

(b)	The professional programmer writes the best possible sort
	routine she or he can.

(c)	The computer scientist writes papers about sort algorithms.

One of the things that they don't say much about in colleges is this
issue of dealing with divided loyalties.  The beginner, fresh out on
the job market, is learning all sorts of things -- he or she is learning
about what the project they are working on and practical programming
all at the same time.  The time comes, however, when you have to choose
what you are  -- and you will probably find that you are terribly
constrained by where you are.

In fact, academia tends to do the student a disservice, by teaching
the values of academia as the only relevant values.  In fact,
academia has strange notions about what is important for programmers.
Most programmers need not know anything about writing compilers, for
example.  On the other hand, they do need to know how to be a quick
study -- how to learn enough about a specialized topic so that they
can work with experts in the topic.


-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

g-rh@cca.UUCP (Richard Harter) (10/01/86)

In article <> edwards@uwmacc.UUCP (mark edwards) writes:
>
>    I believe the roots of Lambda Calculus can be traced farther back
> then that. People like liebnitz (sp ?) and others from the 12th -14th
> century. And the notion of artificial intelligence to the same period
> by I think Raoul (sp ?). One of my prof's showed my Computational
> Linguistics Class a reference in Latin from a book from that period.
> The words Artificial Intelligence were clearly distinguishable, even
> though it was Latin.

Gottfried Wilhelm Von Leibniz, 1646-1716.  Coinventor (with Newton)
of Calculus.  He created a calculating machine (an improvement of
Pascal's).  Leibniz conceived of a universal calculus of logic --
it did not get very far, because the technical foundations did not
exist.

There was also a spaniard who had a logical wheel, resembling a
circular slide rule.  It had multiple disks, with each disk divided
into categories.  He was trying to create a universal reasoning machine.
The date, however, was in the 1500s as I recall (I can't lay my hand on
a reference at the moment.)

The idea of a thinking machine is much older, but these were on the
lines of Golems or robots and tended to be magical in character.

I think it is fair to say that nothing that is now central to
computer science was done before the nineteenth century, with the
exception of numerical analysis.  


-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

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

In article <1032@gilbbs.UUCP> mc68020@gilbbs.UUCP (Thomas J Keller) writes:
>
>  Richard Harter points out that the original work done in the area of
>computer methodology was not, in fact, done by "Computer Scientists" but
>by the early programmers.  True enough.  MY error.

>   I believe that my separation of Computer Science and Programming into two
>distinct, if slightly over-lapped disciplines remains essentially valid. 

SLIGHTLY overlapping?

All the theories in the world are of no use if not for applications.
Much of the early work in formal languages and automata was spurred by
a very practical problem -- writing compilers that work. If you look
at all the people who made large contributions to the "parsing
problem", most of them were programmers, who were busy trying to get
something done, and had the theoretical knowledge to sit back, look at
what they were doing, and say "Hey! I can draw some conclusions from
this!" With a little research, I can probably come up with some
examples, but in any event, it would probably not be an overstatement
to say Computer Science is advanced by people who have BOTH
programming knowledge AND theoretical knowledge. A valid method of
research is to recognize a problem, devise a solution to that problem,
and try to discover the theoretical underpinnings of that solution...
if you are well versed in both theory and execution, it works quite
well. I've done something similiar myself... the library is stripped
bare by hoards of CS grad students at the beginning of each semester,
meaning a 2 week wait for any books you need, and while waiting for
some books to solve a problem in an area new to me, lots of doodling
got me to a point amazingly close to the theories in the books about
that particular topic...

Let's face it, one of the principles of science is EXPERIMENTATION.
Einstein had his "Thought Experiments" to combat the lack of equipment
capable of travelling at near light speed, but computer scientists
have computers.

By the way, somebody above posted his college's curriculum. It was
amazingly difficult, consisting of hoards of numeric analysis,
electrical engineering, and other such stuff.  My gawd, with all that
stuff, how do the students ever have time to learn?! (just a slight
bias I have -- I've learned much more outside of computer science
class, following my interests, than I've learned inside those
classes...).
-- 

      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."

coatta@utcsri.UUCP (Terry Coatta) (10/04/86)

> 
> In fact, academia tends to do the student a disservice, by teaching
> the values of academia as the only relevant values.  In fact,
> academia has strange notions about what is important for programmers.
> Most programmers need not know anything about writing compilers, for
> example.  On the other hand, they do need to know how to be a quick
> study -- how to learn enough about a specialized topic so that they
> can work with experts in the topic.
> 
> Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]

An academics job is to teach the ideals of academia -- they are not doing 
the student a disservice by any means.  If a student wants to be a 
professional programmer, then a professional school is the appropriate
institution of post secondary education for them.  Those students attending
universities should be well aware that the training offered there is
academic, not professional.

Terry Coatta
Dept. of Computer Science, Univ. of Toronto, Canada M5S 1A4
{allegra,cornell,decvax,ihnp4,linus,utzoo}!utcsri!coatta

-- Oh dear, I think you'll find reality's on the blink again

             Marvin the Paranoid Android
 

bzs@bu-cs.BU.EDU (Barry Shein) (10/05/86)

> In fact, academia tends to do the student a disservice, by teaching
> the values of academia as the only relevant values.  In fact,
> academia has strange notions about what is important for programmers.
> Most programmers need not know anything about writing compilers, for
> example.

Oh lord, anti-intellectualism, a great American tradition, makes the
uneducated feel like they're worth something too (you are, stop being
so defensive...)

Most *anythings* don't need to know about *whatever*.

Only educated people do, they are the minority, so you are correct.
Don't worry, most people go through compiler courses without learning
anything anyhow so they are safe by your standards.

If a person does not wish to be educated, they have every right not to
be. Those of us enslaved to academic values and pursuits do not sneer
at such folks, in fact, they are interesting topics for research
studies...

I have no doubt the world is filled with mediocre souls who need to be
parsimonious about their endeavors lest their little brains get filled
up, which I presume is some sort of painful condition. I strongly
suggest such mean folks shy away from the halls of academia so the
rest of us may be free to endeavor in our frantic pursuit to be
knowledgeable about everything in our fields and elsewhere.

I also think that the claim that "the values of academia as the only
relevant values" are the primary obsession of those in academia is
quaint, did you get that from a Shavian novel? I doubt it is from any
real-world experiences which you claim insight into, but it is
amusing, I wish it were true sometimes.

	-Barry Shein, Boston University

g-rh@cca.UUCP (Richard Harter) (10/06/86)

I (Richard Harter) wrote:
RH: In fact, academia tends to do the student a disservice, by teaching
RH: the values of academia as the only relevant values.  In fact,
RH: academia has strange notions about what is important for programmers.
RH: Most programmers need not know anything about writing compilers, for
RH: example.  On the other hand, they do need to know how to be a quick
RH: study -- how to learn enough about a specialized topic so that they
RH: can work with experts in the topic.

And Terry Coatta replied:

TC: An academics job is to teach the ideals of academia -- they are not doing 
TC: the student a disservice by any means.  If a student wants to be a 
TC: professional programmer, then a professional school is the appropriate
TC: institution of post secondary education for them.  Those students attending
TC: universities should be well aware that the training offered there is
TC: academic, not professional.

	Sorry Terry, I can't agree with you for several reasons.  First of
all note that I did say "the values of academia as the only relevant values"
and not the "ideals of academia".  Let us agree that academia should teach,
by precept at least, respect for intellectual honesty and other such
virtues.  I find the concept that the "An academic's job is to teach the
ideals of academia" rather disquieting; if I want to be taught ideals
I will attend a seminary or sit at the feet of a guru.  No doubt I am
reading more into your statement than you meant.

	Let me expand a bit on what I meant.  Someone who holds an
academic position has definite ideas on what is important and what is
not which are conditioned by the fact of his or her employment as an
academic.  In particular, those areas which are live areas of research
(or at least suitable for writing papers about) are important.  To an
academic, the utility outside of academia of knowledge is only of
modest importance.

	Now I am not complaining about this state of affairs.  And if
all students were all to go on and become professors then there would
be no problem.  But if they are (implicitly) told that, in effect,
"research is the only thing worth doing", and "working in industry
is selling out", and "the only things worth studying are those areas
of interest in academia", and "creating a production quality product
is irrelevant", and "intellectual curiosity is the pre-eminent value
and is more important than the needs of your employer", then I suggest
that the average student -- who is not going to become an academic --
is being done a disservice.  And make no mistake; all too many people
do come out of the universities with just those ideas.

	I also have reservations about the following: "If a student
wants to be a professional programmer, then a professional school is
the appropriate institution of post secondary education for them.
Those students attending universities should be well aware that the
training offered there is academic, not professional."  What do you
mean by "a professional school"?  Are you suggesting that someone
who wants to become an Electrical Engineer should not attend a
university?  Would you like to go on record as saying that "The
training offered at Stanford is academic, not professional"?
I hope not.  Perhaps you feel programming is a trade similar
to automobile repair and ought to be taught and regarded in the
same way.  Again, I hope not.

-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

g-rh@cca.UUCP (Richard Harter) (10/06/86)

I (Richard Harter) wrote:

RH: In fact, academia tends to do the student a disservice, by teaching
RH: the values of academia as the only relevant values.  In fact,
RH: academia has strange notions about what is important for programmers.
RH: Most programmers need not know anything about writing compilers, for
RH: example.

And Barry Stein responded:

BS: Oh lord, anti-intellectualism, a great American tradition, makes the
BS: uneducated feel like they're worth something too (you are, stop being
BS: so defensive...)

	Soothing noises.  If it makes you feel better, go ahead and
	be defensive.  I don't mind.  Take two aspirin and it'll all
	go away in the morning.

BS: Most *anythings* don't need to know about *whatever*.
BS: 
BS: Only educated people do, they are the minority, so you are correct.
BS: Don't worry, most people go through compiler courses without learning
BS: anything anyhow so they are safe by your standards.

	More soothing noises.  My goodness, we are upset aren't we.
	Will it help if I point out that your reaction is a massive
	non-sequitor?  No?  I didn't think so.

BS: If a person does not wish to be educated, they have every right not to
BS: be. Those of us enslaved to academic values and pursuits do not sneer
BS: at such folks, in fact, they are interesting topics for research
BS: studies...
BS: 
BS: I have no doubt the world is filled with mediocre souls who need to be
BS: parsimonious about their endeavors lest their little brains get filled
BS: up, which I presume is some sort of painful condition. I strongly
BS: suggest such mean folks shy away from the halls of academia so the
BS: rest of us may be free to endeavor in our frantic pursuit to be
BS: knowledgeable about everything in our fields and elsewhere.

	Sigh!  Pathetic, positively pathetic.  I love your rhetoric.

BS: I also think that the claim that "the values of academia as the only
BS: relevant values" are the primary obsession of those in academia is
BS: quaint, did you get that from a Shavian novel? I doubt it is from any
BS: real-world experiences which you claim insight into, but it is
BS: amusing, I wish it were true sometimes.

	Shavian novel!!?  To tell the truth I will unabashedly admit
	that not only have I not read any of Shaw's novels, I don't
	even know of any.  I have, however, read and attended a 
	number of his excellent plays.  Pray recommend some of them
	(his novels) and I will sample them posthaste.

	I also think that 'the claim that "the values of academia as
	the only relevant values" are the primary obsession of those
	in academia' is quaint.  And where did *you* get that from?
	Not from anything I wrote, my friend.

	Now I may not be an expert of Shavian novels, but I have
	been in the business for twenty five years, so I suppose
	I do have some real-world experiences of one sort and
	another -- including persuading frustrated would-be
	compiler writers that no, we don't need a home grown
	data analysis language complete with an LALR grammar,
	and, yes, they are going to have to learn about FFT's
	and data analysis and they'd better do it damn quick and
	get on with the job that they were hired to do.  But it
	doesn't bother me -- six months with the knout straightens
	them out, and if that won't do it a summer of Gilligan's
	Island reruns will :-).

	Seriously -- I will contend that most computer science
	students will be hired as and expect to be employed as
	software engineers and that the training that they
	receive as computer science students is not entirely
	appropriate.

-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

andy@Shasta.STANFORD.EDU (Andy Freeman) (10/07/86)

In article <10410@cca.UUCP> g-rh@cca.UUCP (Richard Harter) writes:
>Are you suggesting that someone who wants to become an Electrical
>Engineer should not attend a university?  Would you like to go on
>record as saying that "The training offered at Stanford is academic,
>not professional"?

I heard in the late 70's (I have a Stanford BSEE) that the EE programs
at Stanford and MIT weren't accredited.  I still don't care enough to
check.  (I'm not sure what accreditation means in the professional vs.
academic argument, but it is interesting that no one at Stanford seemed
concerned.)

He continued:
>	Let me expand a bit on what I meant.  Someone who holds an
>academic position has definite ideas on what is important and what is
>not which are conditioned by the fact of his or her employment as an
>academic.  In particular, those areas which are live areas of research
>(or at least suitable for writing papers about) are important.  To an
>academic, the utility outside of academia of knowledge is only of
>modest importance.

You obviously haven't tried to live on a professor's salary in the
Santa Clara valley or near Boston. :-)  But seriously, professors
here consult extensively/expensively and/or have companies.  They
also get a lot of industrial funding.  Assuming that these companies
are getting their money's worth, either the professors aren't academics
(by your definition) or these companies value their academic bent.
(I suspect your definition.)

BTW - Stanford just started an undergraduate computer science program.
(This program is in the CS dept; the mathematical sciences and philosophy
degrees weren't.)  It is intended as a non-terminal degree, ie it is
for people who plan on advanced CS degrees; it is not supposed to train
programmers.  (I think it is a little weak in programming skills.)

The trend in Stanford's CS PhD program is to admit more people with
CS backgrounds, but I'd be mildly surprised if half of the people
admitted this year had one.  (I know that fewer than half did a
couple of years ago.)  Some of the professors here claim that
undergraduate CS programs aren't that valuable; some of them do
think that they are becoming more valuable.  (Then again, one of
the candidates for dept chairman said that MS degrees were for
people who didn't get a CS undergrad degree.  We didn't take him.)

-andy
-- 
UUCP:  ...!decwrl!glacier!shasta!andy forwards to
ARPA:  andy@sushi.stanford.edu
(415) 329-1718/723-3088 home/cubicle

jhodgson@sjuvax.UUCP (J. Hodgson) (10/08/86)

Keywords:Concepts

Academics teach concepts. One of the results of this is that if we do it 
right our students are quick studies!

g-rh@cca.UUCP (Richard Harter) (10/08/86)

In article <> andy@Shasta.UUCP (Andy Freeman) writes:
>
>I heard in the late 70's (I have a Stanford BSEE) that the EE programs
>at Stanford and MIT weren't accredited.  I still don't care enough to
>check.  (I'm not sure what accreditation means in the professional vs.
>academic argument, but it is interesting that no one at Stanford seemed
>concerned.)

	Aha!!  I always suspected that.  :-)

>
>You obviously haven't tried to live on a professor's salary in the
>Santa Clara valley or near Boston. :-)  But seriously, professors
>here consult extensively/expensively and/or have companies.  They
>also get a lot of industrial funding.  Assuming that these companies
>are getting their money's worth, either the professors aren't academics
>(by your definition) or these companies value their academic bent.
>(I suspect your definition.)
>
	Good point.  [Make that some professors though.]  My thesis
was not so much that academics were unconcious of the value of money
(something that no one who has ever negotiated a consulting contract
would credit) but that the biases and viewpoints of someone in an
academic position will be different from those of someone in industry.

	Ignoring for the moment the cases where companies don't get
their money's worth (not uncommon), I don't think your dichotomy is
a true dichotomy.  If we grant that the entrepenurial professor is
a true academic (there are purists who don't agree) we don't have to
conclude that the purchasers want their academic bent -- what they
want is their [the professors] specialized knowledge.  In particular,
they want that portion that is relevant to their application.  There
is nothing, after all, that says that academic knowledge must be devoid
of utility.

-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

andy@Shasta.UUCP (10/10/86)

g-rh@cca.UUCP (Richard Harter) wrote:
>andy@Shasta.UUCP (Andy Freeman, ie I) wrote:
>>But seriously, professors here consult extensively/expensively and/or
>>have companies.  They also get a lot of industrial funding.  Assuming
>>that these companies are getting their money's worth, either the
>>professors aren't academics (by your definition) or these companies
>>value their academic bent.  (I suspect your definition.)
>>
>	Good point.  [Make that some professors though.]

I should have said "most Stanford CS professors consult and some have
companies."

>	Ignoring for the moment the cases where companies don't get
>their money's worth (not uncommon), I don't think your dichotomy is
>a true dichotomy.  If we grant that the entrepenurial professor is
>a true academic (there are purists who don't agree) we don't have to
>conclude that the purchasers want their academic bent -- what they
>want is their [the professors] specialized knowledge.

When I said "I suspect your definition [of academic].", I meant that
I don't believe it is nearly as common/accurate as you seem to think.
The entrepenurial professor can't behave as an academic (if it is
fatal in the commercial world) because he is the company.  (I'd be
surprised if consultants were significantly less, or more, productive.
If they are, then a company that adjusted would have a significant
advantage.)

Actually, professors behave differently in a commercial setting than
they do in an academic one.  What is that you said about "being a
quick study" as the most important ability in the commercial world?

-andy

ps - Until my third year of CS classes, I used a different language in
every class.  Is that enough change?  (That's what happens if you're
in school when everything is changing.)
-- 
UUCP:  ...!decwrl!glacier!shasta!andy forwards to
ARPA:  andy@sushi.stanford.edu
(415) 329-1718/723-3088 home/cubicle

coatta@utcsri.UUCP (Terry Coatta) (10/10/86)

> 
> 	Now I am not complaining about this state of affairs.  And if
> all students were all to go on and become professors then there would
> be no problem.  But if they are (implicitly) told that, in effect,
> "research is the only thing worth doing", and "working in industry
> is selling out", and "the only things worth studying are those areas
> of interest in academia", and "creating a production quality product
                                 ------------------------------------- 
> is irrelevant", and "intellectual curiosity is the pre-eminent value
  -------------        -----------------------------------------------
> and is more important than the needs of your employer"
  -----------------------------------------------------

Your first comment implies that work produced by academics is generally
not of production quality, which I am inclined to interpret as meaning
that it is somehow shabby.  I do not believe this to be the case.  The
programs that I write (and the way I try to teach people to program)
are hopefully well-written, well-commented, and well-documented.  However,
they do not generally include a lot of online help, the documentation is
not aimed at the novice user, and a variety of small features (which
I regard as being trivial to implement) may not be present.  Thus, these
prgrams are not of production quality -- but why should I bother to
waste my time doing "busy-work", the university isn't paying me
for the resulting boredom, I'm not learning anything (well perhaps
I'm improving my typing skills), and I'm not going to market the thing
anyway.  The point is I could add these things if someone ordered me
too, but I get upset when I have waste my time doing them when what
I should be doing is LEARNING -- learning techniques for approaching
problems, learning how to analyze, learning how to think.

> 
> 	I also have reservations about the following: "If a student
> wants to be a professional programmer, then a professional school is
> the appropriate institution of post secondary education for them.
> Those students attending universities should be well aware that the
> training offered there is academic, not professional."  What do you
> mean by "a professional school"?  Are you suggesting that someone
> who wants to become an Electrical Engineer should not attend a
> university?  Would you like to go on record as saying that "The
> training offered at Stanford is academic, not professional"?
> I hope not.  Perhaps you feel programming is a trade similar
> to automobile repair and ought to be taught and regarded in the
> same way.  Again, I hope not.

> Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
> 	For Cheryl :-)

I don't know why you hope not.  When I was busy being an undergrad we 
had some people in from "industry" and they told us they didn't
like to hire grads from the university because they were inclined to
ask too many questions -- "Are you sure you want this feature?  Wouldn't
the system be better if...?"  They said they wanted programmers who
had a good grasp of a variety of languages, knew various standard
techniques for accomplishing things (B-trees, ISAM...), and most of all
WHO DID WHAT THEY WERE TOLD WITHOUT ASKING QUESTIONS.  Now these
programmers that they wanted sound a lot to me like car mechanics --
know the make, the model, fix it.  I sincerely hope that graduates
from university never do what they are told without asking any
questions -- I hope that they have become critical thinkers, and
will approach everything they do by asking questions, and finding
the best way of doing it.  I repeat, if I had wanted to go and
get a job as a programmer I would not go to a university.  I came
to the university because I wanted to find out how compilers
worked, I wanted to know about the theoretical underpinnings of
these machines that I was working on, I wanted to be curious --
I did not want to know how to program in COBOL, I did not
want to spend weeks adding help screens to my programs, I did
not want to just sit back and do what I was told without
being curious about whether there were other ways of do it.

At the risk of severe flamage for excess rambling I'll go on a bit
more.  I suspect your idea of a professional programmer does
not coincide with mine, and perhaps this is because your perception
of the work environment for professional programmers is different.
My experience is that the demands of the typical employer are
"do what I want, and do it quickly before we lose any more profits".
As long as this is the attitude that a professional programmer
is going to encounter in the "real world" then better for
professional programmers to be car mechanics -- it will result in 
a lot less aggravation for them.  And since we don't train 
car mechanics at universities, lets not train their programmer
counterparts their either.

Terry Coatta
Dept. of Computer Science, Univ. of Toronto, Canada M5S 1A4
{allegra,cornell,decvax,ihnp4,linus,utzoo}!utcsri!coatta

-- Oh dear, I think you'll find reality's on the blink again

             Marvin the Paranoid Android
 

g-rh@cca.UUCP (Richard Harter) (10/13/86)

J. Hodgson writes:
>Academics teach concepts. One of the results of this is that if we do it 
>right our students are quick studies!

	Nice concise statement.  Is it true, though?  Let me pose two
questions: (1) Are the teaching methods used in academia conducive to
learning to be a quick study? and (2) If they are not, would methods
which are suitable for producing quick studies be appropriate in an
academic setting.  Perhaps I should add a third question: What am I
talking about when I use the term 'quick study'?

	Let me answer the latter question.  Consider our SE in action.
She has a new assignment which, for the sake of explicitness, I will 
assume to be the specification, design, and implementation of a real
time data gathering and reduction system for marine seismic data.
System specification and design are to be done in collaboration
with geophysicists specializing in marine seismology; the hardware
to be used is a machine and operating systems that she has never
used before.  Specification of the data analysis algorithms will
be done jointly with the geophysicists; she will be expected to 
supply signifigant input as to the appropriateness of the techniques
to be used.  Implementation will be done in part by her and in part
by programmers working under her direction.  [As you may gather,
this is a real example.]

	Now what our heroine has to do amounts to this.  She has
to locate the resources that describe the machine and its operating
system and extract from those resources enough information to do an
intelligible and reasonable design; note that she does not have to
have a comprehensive knowledge -- she merely has to extract the
relevant information.  She must learn a certain amount about the
jargon and concepts that the geophysicists use; again she does not
have to become a geophysicist, but merely has to learn to talk to
them and translate their needs into her requirements.  To do so
she will need to have at hand a certain amount of scientific
knowledge at hand and some she will have to pick up on the fly.
(For example, she will have to either understand or learn about
elementary filter theory.)  The task will probably imply the use
of computational methods that are not part of the domain of knowledge
of the geophysicists.  It will be her task to recognize these
computational requirements and to select the appropriate 
algorithms.

	And then, on her next assignment ....

-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

g-rh@cca.UUCP (Richard Harter) (10/14/86)

In article <> coatta@utcsri.UUCP (Terry Coatta) writes:
>> 
>> 	Now I am not complaining about this state of affairs.  And if
>> all students were all to go on and become professors then there would
>> be no problem.  But if they are (implicitly) told that, in effect,
>> "research is the only thing worth doing", and "working in industry
>> is selling out", and "the only things worth studying are those areas
>> of interest in academia", and "creating a production quality product
>                                 ------------------------------------- 
>> is irrelevant", and "intellectual curiosity is the pre-eminent value
>  -------------        -----------------------------------------------
>> and is more important than the needs of your employer"
>  -----------------------------------------------------
>
>Your first comment implies that work produced by academics is generally
>not of production quality, which I am inclined to interpret as meaning
>that it is somehow shabby.  I do not believe this to be the case.  The
>programs that I write (and the way I try to teach people to program)
>are hopefully well-written, well-commented, and well-documented.  However,
>they do not generally include a lot of online help, the documentation is
>not aimed at the novice user, and a variety of small features (which
>I regard as being trivial to implement) may not be present.  Thus, these
>programs are not of production quality -- but why should I bother to
>waste my time doing "busy-work", the university isn't paying me
>for the resulting boredom, I'm not learning anything (well perhaps
>I'm improving my typing skills), and I'm not going to market the thing
>anyway.  The point is I could add these things if someone ordered me
>too, but I get upset when I have waste my time doing them when what
>I should be doing is LEARNING -- learning techniques for approaching
>problems, learning how to analyze, learning how to think.
>
	Ouch.  It is quite clear that we have different images of
production quality software.  Let me elucidate.  Significant features
of production quality software include:

(a)	The software will run by a number of people (customers) who
	have paid hard cash for the software.  These people will not
	know the details of the software and usually will not have
	access to the source.  It must be possible for these people
	to run the software without a knowledge of its contents and
	without contact with the creators of the software.

(b)	Pursuant to (a) the software must be substantially and
	correctly documented from the prospective user's viewpoint.
	This documentation should not presume special knowledge
	available to the creator of the program.

(c)	The software should be substantially error free (ideally
	it should be completely error free -- however.)  It should
	work not only when used by the creator, but also when used
	by the end users.  In particular there should be no "don't
	do that because we didn't take care of that case" loose
	ends.

(d)	The software should be rigorously tested.  It is not enough
	that it works in the small number of situations of immediate
	interest to the creator.  It must work under a wide variety
	of situations.  Testing and validation is a major part of
	the work in preparing production software (or ought to be.)

(e)	The software should have detailed error handling, and input
	and data validation.  Error recovery and proper handling
	of erroneous input should comprise a significant portion
	of both the code and the design.

(f)	There should be either implicitly or explictly a quality
	control process.

(g)	There should be carefully controlled procedures for generating
	the software actually shipped to the customers.  All released
	software should be clearly identified as to content and origin.

(h)	Typically, production software is the product of more than
	one person and may run from tens of thousands to millions
	of lines of code.  The entirety of the software should be
	coherent in design, methodology, and style, and should be
	readily maintainable as a whole.  The work of individual
	contributors should fit into the main body.

(i)	The software should be well engineered.  This includes
	analysis of a variety of tradeoffs.

	I could go on.  Perhaps I should make the caveat that
much software that is commercially available is not of production
quality by the standards I have listed :-).  However I wouldn't
list fancy help screens as a criterion for production quality software.
A nicety, perhaps, but not a gut issue.

	Now let us consider a typical program in an academic
setting.  [That is, if there is such an animal -- BSD4.x and
the beginning student's first program don't have much in common.]
I suggest that the following features are common:

(a)	The program is used principally by the creator and a few
	close associates.

(b)	The program is freely modifiable by the users if it does
	not work to expectations.

(c)	Testing is principally restricted to the immediate uses
	intended by the creator.

(d)	The software is not part of a much larger body of software.

(e)	Version control and release control are not major issues.

(f)	Long term maintenance by people other than the creator is
	not a major issue.

	Note that I am not claiming that these features are always
the case, but merely that they are very common.  Nor am I claiming
that programs of these kinds are shabby or somehow undesirable.
There are things that should be done in one context and are irrelevant
in another.  A good Software Engineer should know what these things
are.  If I am writing a program which will be used by 10,000 people
there are things that I had better do that are not important if I
am going to be the only user.

	Terry makes the point that he teaches his students to
write programs that are well written but are not elaborated.  He
goes on to say that he feels that he (and presumably his students)
should not have to do more than that; his (and their) time is spent
more profitably in learning.  I agree.  Clearly, one should not
invest more effort into a program than is warranted by its ultimate
value (as measured by the total usage of the program.)  This is
the kind of engineering tradeoff decision that one makes all of
the time.

	Nonetheless there are substantive differences between
software production in an academic setting and in "industry" as
I hope I have made clear.  And I will say, dogmatically, that it
rests on academia to understand what those differences are and
to teach something about the nature of producing production quality
software.

	I would also add that there is a common fault in new
programmers, which is, essentially, they have an underdeveloped
sense of responsibility and professional obligation (sometimes
known as professional ethics).  [It is not infrequent in old
programmers also.]  In part, this is because we all like to
play with the machines.  In part it is simply the case that
young people are often still making the transition from play to
work.  The idea that one owes one's principal loyalties and efforts
to one's employer and that one's activities should not impede
your fellow employees is one that has to be learned [quite
often rather rudely from your immediate supervisor.]  It may
well not be legitimate to blame the universities for this state
of affairs; however I will express the wish that professional
ethics and a minimal knowledge of what will be expected of them
as employees were a part of the core curriculum.

-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

g-rh@cca.UUCP (Richard Harter) (10/14/86)

In article <> coatta@utcsri.UUCP (Terry Coatta) writes:
>> I hope not.  Perhaps you feel programming is a trade similar
>> to automobile repair and ought to be taught and regarded in the
>> same way.  Again, I hope not.
>
>I don't know why you hope not.  When I was busy being an undergrad we 
>had some people in from "industry" and they told us they didn't
>like to hire grads from the university because they were inclined to
>ask too many questions -- "Are you sure you want this feature?  Wouldn't
>the system be better if...?"  They said they wanted programmers who
>had a good grasp of a variety of languages, knew various standard
>techniques for accomplishing things (B-trees, ISAM...), and most of all
>WHO DID WHAT THEY WERE TOLD WITHOUT ASKING QUESTIONS.  Now these
>programmers that they wanted sound a lot to me like car mechanics --
>know the make, the model, fix it.  I sincerely hope that graduates
>from university never do what they are told without asking any
>questions -- I hope that they have become critical thinkers, and
>will approach everything they do by asking questions, and finding
>the best way of doing it.  I repeat, if I had wanted to go and
>get a job as a programmer I would not go to a university.  I came
>to the university because I wanted to find out how compilers
>worked, I wanted to know about the theoretical underpinnings of
>these machines that I was working on, I wanted to be curious --
>I did not want to know how to program in COBOL, I did not
>want to spend weeks adding help screens to my programs, I did
>not want to just sit back and do what I was told without
>being curious about whether there were other ways of do it.
>
>At the risk of severe flamage for excess rambling I'll go on a bit
>more.  I suspect your idea of a professional programmer does
>not coincide with mine, and perhaps this is because your perception
>of the work environment for professional programmers is different.
>My experience is that the demands of the typical employer are
>"do what I want, and do it quickly before we lose any more profits".
>As long as this is the attitude that a professional programmer
>is going to encounter in the "real world" then better for
>professional programmers to be car mechanics -- it will result in 
>a lot less aggravation for them.  And since we don't train 
>car mechanics at universities, lets not train their programmer
>counterparts their either.
>

	I sympathize.  Actually, there are two rather distinct
programming environments.  There is the world of business programming
(about 65%) and everything else.  And they are very different
environments.  A lot of COBOL shop programming is, from my viewpoint,
depressing, not to say horrid.  First of all it is traditionally
split between analysts and coders (who are often expected to
operate at the trade school level.)  Secondly the pressures are
high and the work very quickly becomes repetitive (this is report
writer 1001, tomorrow we want #1002 and #1003).

	However, I have the impression, perhaps unfairly taken, that
you understand or know very little about the "real world" of the
professional programmer.  My impression is that you have substantially
misunderstood what you were being told by "industry".  "Don't ask
questions" is your rendition, but I suspect it is a misunderstanding.
Let me phrase it as follows, "Your scope for innovation and change
of design and specifications is limited because changes of this type
are expensive and have an impact far beyond yourself; you will not
have the freedom of innovation that you had when you were creating
software for yourself.  If you do not understand and accept this,
then your value is limited."

	As a member of larger team you do not have the freedom of
action that you have as an individual, nor do you have the freedom
to set goals for the organization that you do for yourself.  You
have some freedom, but not as much.  On the other hand, you have
greater resources at hand and you are participating in a much larger
achievement.  Personally, my sympathies are with the freedom of
action, but that is another story.

	I find your final conclusion depressing because it tells
me that (a) you don't know very much about industry, (b you are
hostile to it on a basis of ignorance, and (c) you are probably
passing your misconceptions onto your students.  Perhaps I am doing
you a major injustice; please feel free to correct me [flames optional].
However that is the impression I am given.

-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

laura@hoptoad.uucp (Laura Creighton) (10/16/86)

In article <3447@utcsri.UUCP> coatta@utcsri.UUCP (Terry Coatta) writes:
>
>An academics job is to teach the ideals of academia -- they are not doing 
>the student a disservice by any means.  If a student wants to be a 
>professional programmer, then a professional school is the appropriate
>institution of post secondary education for them.  Those students attending
>universities should be well aware that the training offered there is
>academic, not professional.

I sure didn't know that, and I know a lot of people in the same boat.
I was interested in computers, and I had a scholarship to the University
of Toronto, and it was a good school, so I went.  I never thought about
it, which was, of course, my most serious mistake, and look what happened.

I think that over all I would have been much happier if I had gone into
electrical engineering. But I was looking at the course outline posted for
CS (Software Engineer) as opposed to CS (theoretical) and thought -- wow!
You see, I would have liked to take almost every one of the software
engineering courses, and a few of the theoretical ones.  Instead, I went
to a school that taught all (almost all) of the theoretical courses
and almost none of the software engineering ones. [I didn't think the 
emphasis on languages appropriate, but then again for a few not all that 
difficult filler courses they wouldn't be all that bad.]  David Marks
sure has me pegged.  Some day i would love to get published in the
COMMUNICATIONS of the ACM, but the JOURNAL -- I can't remember the
last time I wanted to read anything there.

Which is not the same thing as not wanting to learn -- I just wish that
I had met David Marks before I applied to university and he told me
about this list and the difference between SE and Theoretical CS.

-- 
``Never string ethernet in the presence of a kitten.''
Laura Creighton		
ihnp4!hoptoad!laura  utzoo!hoptoad!laura  sun!hoptoad!laura
toad@lll-crg.arpa

laura@hoptoad.uucp (Laura Creighton) (10/16/86)

Terry Coatta, I worked and went to school at U of Toronto for 6 years.
And as far as I know, I never met you.  And none of what Richard Harter
said may apply in the slightest bit to you personally.  But if you do
not know what he means then you are burying your head in the sand.

Do you want the names of the University of Toronto professors who
told their classes publically that they should not use lint on their
C programs?  Not that C is used very much at U of T, these days, but
I was working in the advising office and got to tell all these students
that they wouldn't need to ask me how to fix thier programs if they
would just use lint.  But, no, professor so-and-so told them not to
use it.  Of course not. Professor so-and-so started wrtiting code in
v6 days and doesn't want to convert it to v7 type code.  I got angry
and tracked down those professors, but I don't know if they are still
advising their students not to use lint.

Do you want the name of the U of T professor who would not believe me
for a month when I told him that he *must* *must* *must* declare
malloc to return char *?  The machine we now had, unlike a vax, 2
registers to put return values in.  And ints went in one, and 
pointers went in another.  And if you don't declare malloc you will
get whatever trash is in the other register instead of a pointer.

Or the U of T professor whom I had to explain what virtual memory was
to?

Don't get me wrong -- U of T is a great place.  ANd i actually think
that the professors there, especially the AI people and the people at
CSRI program significantly better than any professors I have met
at any university in North America  with the exception of Stanford.
And there is nothing wrong with the fact that the U of T professors
are not able to program well -- that is not what most of them are
interrested in doing well.  (Moreover, I made a rather good living
while I went to school there doing almost nothing else but porting
bad code written by professors and grad students from one machine
to another.)

The annoying thing was that my father was a doctor and a U of T 
associate professor.  And my mother was a teacher and had gone to
U of T.  Naturally, I was expected to go to U of T.  And, not unreasonably,
I thought that I was going to learn how to be a professonal at U of T --
that was the reason I went there.  I didn't go there to learn theoretical
knowledge -- I had been reading books from the U of T bookroom all my
life, and theoretical knowledge you can find in books.  I wanted to
know what all the hot new research in CS was (and U of T professors
don't have enough time to explain their research to every interested
undergradaute) and I thought that I would learn how to be a professional,
so that I could go out into industry and build wonderful software, and
in general make the world a better place to live in.

But how to be a prefessional was not on the curriculum.  And I found that
the hot new research was done by grad students who only got it enough
done to get their degree.  And that then the research would be
ignored, and not finished up, and thus not seen by the rest of the
world, in industry, who really could use it to make the world a better
place.  And I found that there was enough professors in DCS that rained
hail and slung insults at the CSRG (it was CSRG in these days) for
being too practical, and too much like engineering, that U of T has
*2* computer science schools.  Thank goodness for the Stanford Fleming
Fire, which isolated them!

I can go on and on.  And U of T is a particularily good place in terms
of finding Software Engineers who also are also professors.  I mean --
there are some there.  If you want to find some, you can.  Perhaps
you are one of the best ones there -- I don't know -- I don't think
that I ever met you.  But look around you.  There are professors at
U of T who think very well, but cannot program their way out of a
paper bag.  That is what they have grad students, and hire other
students like me for -- to do the programming.  This is fine; I am
not coming down on them.  Some of the people who program the lousiest
are my best friends and some of the most brilliant thinkers there.

But like the bulk of the students that I went to U of T with, I went
there with the idea that I would be taught to be a professional 
programmer there, at the university, in class.  Everybody I met
when  I was a teenager assured me that that was what I would get at
U of T.  And they were wrong -- or mostly wrong.  I learned how to
be a professional programmer at U of T by hanging around people in
the Physics and Astronomy department, who had a theoretical knowledge,
not of Computer Science, but of Physics and Astronomy.  What they
did have was a good practical knowledge of:

	this program must run, and give correct results, cause
	nobody will care about our beautiful thoughts if we
	get the answers wrong

	this program must be documented so that the next guy to
	make a change, 4 years from now, will know what is going on

	this program must be easy to maintain

	this program must be portable so that when we buy a pdp/11,
	{vax, array processor, time on a Cray, give a portable field
	unit to some of our grad students}  all of our work does not
	grind to a halt as we rewrite code for years

I went to U of T.  It was a remarkable experience, and I got a great
education.  But I would advise people there who do not want to  be
academics to stop caring so much about your marks, study less, and
hang out with people at U of T writing application software for use
in the other science departments, like physics and zoology and
chemistry.  Because there is a lot going on there which is more
useful to know in the real world than 20 lemmas about Turing machines,
which you can always look up in your textbook if you ever need to know 
them in the real world.

And I am being too hard now -- you just pushed a real big button of mine.
There are some very, very, very brilliant people who are computer
science professors at U of T.  Just to meet them is a wondeful and
uplifting experience.  If you are not obsessed with marks, most of
the cse classes I took were an incredible amount of fun.  I liked it.
It is just when I see the wasted, 95% done and I have got my PhD now
out of it, abandoned work done by legions of U of T grad students
that I despair.  You see, a lot of these work has good practical
applications which are really needed and wanted in industry, but who
has time to read all the research being done by grad students all
over the world in order to find the few gems that you personally
have an application for right now?

So it just dies.  And in academia people go on to new things which
have a thesis in them...

But I digress.  sorry.  One final thing -- for you grad students out
there.  Who do you think has more influence in this world -- your 
adviser, or Bill Joy?  It is industy which has given Joy his influence.
If having influence in this world is one of the things that motivates you,
and something which is important to you, and you don't think that you
are going to be the next Nicolas Wirth, then you may be in the wrong place
right now.
-- 
``Never string ethernet in the presence of a kitten.''
Laura Creighton		
ihnp4!hoptoad!laura  utzoo!hoptoad!laura  sun!hoptoad!laura
toad@lll-crg.arpa

jjboritz@watrose.UUCP (Jim Boritz) (10/17/86)

In article <1195@hoptoad.uucp> laura@hoptoad.UUCP (Laura Creighton) writes:
>to another.)
>
>But how to be a prefessional was not on the curriculum.  And I found that
>   .
>   .
>   .
>But like the bulk of the students that I went to U of T with, I went
>there with the idea that I would be taught to be a professional 
>programmer there, at the university, in class.  Everybody I met
>when  I was a teenager assured me that that was what I would get at
>U of T.  And they were wrong -- or mostly wrong.  I learned how to
>be a professional programmer at U of T by hanging around people in
>the Physics and Astronomy department, who had a theoretical knowledge,
>not of Computer Science, but of Physics and Astronomy.  What they
>did have was a good practical knowledge of:
>-- 
>``Never string ethernet in the presence of a kitten.''
>Laura Creighton		
>ihnp4!hoptoad!laura  utzoo!hoptoad!laura  sun!hoptoad!laura
>toad@lll-crg.arpa

Well you'll be glad to know that nothing has changed.  People still go to
University with the idea that university will teach them how to be a 
professional programmer.  These people are still all wrong.  Unfortunately
they are also wrong to expect this from the "university".  There are very
few universities which claim a ciriculum which will turn you into a 
professional.  There are no courses labelled PRO 101. I don't think that
there is a single academic that claimed that by simply attending classes
anyone will become a professional.  Most academics do not think  that it
is the responsibility of a university to teach students about being a 
professional blank (fill in the name of your favorite profession).  

If you look at universities historically you will find that it is only
with our *modern* era that universities have become somehow turned into
technical schools.  University schools of engineering or computer science
are fairly recent additions to the old notion of academia.  When I say 
recent I mean 50 - 100 years.  Now it is true that these fields did not
exist in the well defined formats we see them in now, and they are 
outgrowths of older schools like science and mathematics.  Now in the
past there has not been a truly strong link between industry and academia
except that academia turns out graduates that go into industry. 

A great many academics do not feel that the links between university and
academia should be strengthed.  I go to a university with very strong 
ties into industry though, but even here there is a distinction between
academia (big on research small on development) and industry (big on 
development small on research).
 
I guess I have done a lot of mumbling but to sum it up, if you want 
to be taught about how to be a professional, get a job and talk to other
professionals.  Do not expect a university to do it for you. They have
never claimed to do it for you.

Your friends told you that you would learn about being a professional
by going to U of T.  They did not tell you how though, and in the end 
you did learn about it while being at university even though not a single
professor ever talked about it in class.  This translates into:  You went
to university and somehow learned to be a professional.  Those people that
told you that you were going to learn about being a professional ended up
being right after all.
 
Ok I'll stop but just let me say that one of the goals of university
is to teach you how to learn on your own and adapt to new enviroments
and situations quickly.  If you have ever been out in industry you will
have to deal with the people that keep a list of all the commands they
ever use on a piece of paper beside their terminal and when they loose
the piece of paper they call an *expert* to help them.  

----------------------------------------------------------------------
Jim turn the volume down.
Huh?
You're getting excited again.

jjboritz@watrose    Jim Boritz

mc68020@gilbbs.UUCP (Thomas J Keller) (10/19/86)

   This argument has gotten utterly ridiculous.  We have heard from San Diego
that there is no need for people to study the theory of computing, we have
heard from various other sectors that industry doesn't need or want Computer
Scientists, and we have heard from still other sectors that the educational
systems are defrauding students, by permitting them to study Computer Science
when what they *REALLY* wanted was Professional Programming.


   What a bunch of horse puckey.

   I think the only way we could please most of these provincials is to simply
to henceforth ban the teaching of theoretical computer science completely.
After all, according to them, industry neither needs nor wants computer
scientists, so obviously there is *NO* value in teaching it.  (might as well
ban the teaching of theoretical physics, mathematics, etc., while we're at it)

   Any student who can get all the way through a 4 year program in *ANYTHING*
and not realize that this program was *NOT* preparing them for what they 
wished to be prepared has no sympathy from me!  If they'd take a look at the
real world outside their classroom, do a little research, they would have a
pretty damned good idea what the curriculum they're being offered was aimed
at, and could effectively evaluate its worth in light of their goals.  If they
*DON'T* do so, they're lazy, stupid slobs who haven't any business in an
institution of higher education in the first place.  **YOU** are responsible
for your education, the management of that education, and the quality of the
education you receive.  No one else.

   The proposition is really quite simple:

   Computer Science, Software Engineering, and Programming are very different
professions.  They overlap in some areas, and certainly the FUNDAMENTAL skills
required for all three are similar, if not identical.  This, however, does NOT
mean that we should destroy the theoretical orientation of the Computer Science
department, in order to train Software Engineers or Programmers.  These people
need their *OWN*, independent departments, optomized to provide them with the
best training available for their chosen professions.

   It is utterly ridiculous to suggest otherwise.

-- 

Disclaimer:  Disclaimer?  DISCLAIMER!? I don't need no stinking DISCLAIMER!!!

tom keller					"She's alive, ALIVE!"
{ihnp4, dual}!ptsfa!gilbbs!mc68020

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

anderson@uwmacc.UUCP (Jess Anderson) (10/20/86)

Tom Keller writes:
> 
>    This argument has gotten utterly ridiculous.  We have heard from San Diego
> that there is no need for people to study the theory of computing, we have
> heard from various other sectors that industry doesn't need or want Computer
> Scientists, and we have heard from still other sectors that the educational
> systems are defrauding students, by permitting them to study Computer Science
> when what they *REALLY* wanted was Professional Programming.
  [...]
>    The proposition is really quite simple:
> 
>    Computer Science, Software Engineering, and Programming are very different
> professions.  They overlap in some areas, and certainly the FUNDAMENTAL skills
> required for all three are similar, if not identical.  This, however, does NOT
> mean that we should destroy the theoretical orientation of the Computer Science
> department, in order to train Software Engineers or Programmers.  These people
> need their *OWN*, independent departments, optomized to provide them with the
> best training available for their chosen professions.
> 
>    It is utterly ridiculous to suggest otherwise.
> 
I've been reading this discussion for some time now, holding my peace.
Maybe it's because things have changed so much since I was in school,
but I think Tom is quite right. What *is* going on in the minds of our
students when they go to college? What do they expect? I've been so
exasperated with this whole discussion recently because it strikes me
(maybe it's just me, and I guess Tom) as *too* immature to expect the
school to train you for a job. I'm frustrated because I don't think
that's what going to school is for. I'm down on the institutions, too,
because what they offer is *too much* like vocational training. 
   But I don't want to  rant over those points. Instead, I'd
like to give counsel to those looking for real-world solutions
to real-world problems. Trouble is, that isn't so easy, because there
are tremendous conflicts built into the whole situation in higher
education. Tuition is rising, students graduate with crushing debts,
the society breeds greed and dreams of "making it big," and dozens of
other factors make it nearly impossible to know how to direct yourself
in the interval between high school and life at work, even if you are
one of those (increasingly rare) persons who does *not* depend on some
authority figure for life's basic decisions (I know my biases are showing,
but what can I do :-).
   Let me just collapse all my great recommendations into one, because
in fact it subsumes all others:

   --> Learn to read and write effectively! <--

If you can do that, everything else is going to be substantially
easier. The better you can do it, the richer, more interesting,
and more productive your life will be. If you have language literacy,
everything else will be a snap, including success, if that's what
turns you on.
-- 
==ARPA:====================anderson@unix.macc.wisc.edu===Jess Anderson======
|      (Please use ARPA if you can.)                     MACC              |
| UUCP: {harvard,seismo,topaz,                           1210 W. Dayton    | 
|    akgua,allegra,ihnp4,usbvax}!uwvax!uwmacc!anderson   Madison, WI 53706 |
| BITNET:                            anderson@wiscmacc   608/263-6988      |
==Words are not just blown air. They have a meaning.=====(Chuang Tsu)=======

coatta@utcsri.UUCP (Terry Coatta) (10/24/86)

> 
> 	I find your final conclusion depressing because it tells
> me that (a) you don't know very much about industry, (b you are
> hostile to it on a basis of ignorance, and (c) you are probably
> passing your misconceptions onto your students.  Perhaps I am doing
> you a major injustice; please feel free to correct me [flames optional].
> However that is the impression I am given.
> 
> -- 
> 
> Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
> 	For Cheryl :-)

It is true that I do not know much about the industry (nor will I likely
ever since I rather like the academic environment).  However, I did not
exagerrate what we were told.  The people we had in to talk to us were
very blunt -- we want programmers that DO WHAT THEY ARE TOLD -- NO room
for personal freedom.  Most of the programming that I do is with groups
of people though, and so I do have a feeling for being part of a larger
team.  Even in the case where I was not the leader of the group, there
was always the feeling that all members of the team were welcome to 
(encouraged to) consider different ways of handling the problem at hand,
and that their suggestions would be listened to.

As for passing on misconceptions to students I say nothing about industry
at all -- I confine myself to trying to teach them how to approach
problems, and how to translate their solutions into good code.  You noted
that there were diffrences between the academic style of programming and
the "production quality" style of programming, and I agree by and large
with your distinctions.  I'm even willing to go so far as to agree
that academics shoulld be aware of the differences, but NOT that they
should be required to teach the other style.  In computer science
what matters is that you can think up a good solution to a problem,
and that you can translate that into good code, not that you can
produce a product that XXX company can make a fortune on.  If part of
the problem you are given is that you have to work in teams, then part
of a good solution is to ensure that your code integrates nicely
with the system.  Similarly if part of the problem description stipulates
that a good user interface is required, then that must be part of the
solution.  These are not global concerns to be applied to everything
the student does -- it they tried we'd never have enough time to get
around to things that do matter for academics, like analyzing algorithms,
doing the group theory related to numerical analysis, doing the
probability theory related to LANs, etc.  

I think the large difference between our viewpoints is that you want
computer science to be like engineering -- fill them up with the
formulas, rules and techniques that will produce practical results --
I want scientists and experimenters -- give them the background
and the theory they'll need to explore the unknown territory of
computer science.  The world needs both types of people, but
to force the values of one grop on the other is wasting peoples
time, and I think its pretty clear which set of values I think
belong at the university.

Terry Coatta
Dept. of Computer Science, Univ. of Toronto, Canada M5S 1A4
{allegra,cornell,decvax,ihnp4,linus,utzoo}!utcsri!coatta

-- Oh dear, I think you'll find reality's on the blink again

             Marvin the Paranoid Android
 

coatta@utcsri.UUCP (Terry Coatta) (10/24/86)

> 
> Do you want the names of the University of Toronto professors who
> told their classes publically that they should not use lint on their
> C programs?  Not that C is used very much at U of T, these days, but

Nobody in their right mind would not use lint.  It is bad programming
not to.  I don't think I've anywhere claimed that universities
are filled with professors who are good programmers.  I have an idea
of what I think universities should be like, and for the most part
is does not include training professionals.  Universities are places
where knowledge is "made".  Universities train people in the art
of "making knowledge".  There probably is no good place to go
now for training as a professional programmer.  This does not mean
we should give the job to the universities.  New institutions are
required whose purpose is the production of the professionals that
our society requires.

(... horror stories about U of T CSC profs)

I sympathise with the problems you had.  But as I said before I haven't
claimed that universities are filled with good programmers -- I only
hope that through teaching the things that I teach they may eventually
be so.

> chemistry.  Because there is a lot going on there which is more
> useful to know in the real world than 20 lemmas about Turing machines,
> which you can always look up in your textbook if you ever need to know 
> them in the real world.

This is what I disgree most with.  The 20 lemmas about Turing machines
are exactly what the universities should be concerned with teaching.
Its by knowing those lemmas, and countless others, and having been
exposed to a lot of other "boring" theory, that a student may one
day be able to push back the frontiers of computer science.  Just
as English is a means of expression for most of us, so too are programs
an expression of what the computer scientist knows.  Thus, to be a
good scientist he should know how to express himself well -- this
means program well.  This is a concern for both the professional
and the academic.  There are countless other items which are of
principally of concern only to the professional, they will not
help an academic in communicating his ideas to his peers, and I don't
think there is any need for him to waste time learning them.

> applications which are really needed and wanted in industry, but who
> has time to read all the research being done by grad students all
> over the world in order to find the few gems that you personally
> have an application for right now?
> 
> So it just dies.  And in academia people go on to new things which
> have a thesis in them...

This is an odd comment.  All theses are available at the CSC library,
or the main library.  They are catalogued according to topic, so its
pretty easy to find ones that might be relevant to what you are doing.
You don't read every novel thats published in order to find the
ones that interest you do you?  Also much research is available
through journals (ACM, IEEE, etc).  If you want to know what the
CSC world is up to, then read them.  The only reason that an idea
would die is if the professionals didn't bother to read about it.

> -- 
> ``Never string ethernet in the presence of a kitten.''
> Laura Creighton		
> ihnp4!hoptoad!laura  utzoo!hoptoad!laura  sun!hoptoad!laura
> toad@lll-crg.arpa

Terry Coatta
Dept. of Computer Science, Univ. of Toronto, Canada M5S 1A4
{allegra,cornell,decvax,ihnp4,linus,utzoo}!utcsri!coatta

-- Oh dear, I think you'll find reality's on the blink again

             Marvin the Paranoid Android
 

g-rh@cca.UUCP (Richard Harter) (10/25/86)

In article <> mc68020@gilbbs.UUCP (Thomas J Keller) writes:
>
>   This argument has gotten utterly ridiculous.  We have heard from San Diego
>that there is no need for people to study the theory of computing, we have
>heard from various other sectors that industry doesn't need or want Computer
>Scientists, and we have heard from still other sectors that the educational
>systems are defrauding students, by permitting them to study Computer Science
>when what they *REALLY* wanted was Professional Programming.
>
>   What a bunch of horse puckey.
>
>   I think the only way we could please most of these provincials is to simply
>to henceforth ban the teaching of theoretical computer science completely.
>After all, according to them, industry neither needs nor wants computer
>scientists, so obviously there is *NO* value in teaching it.  (might as well
>ban the teaching of theoretical physics, mathematics, etc., while we're at it)
>

	Thomas, me boy, have you ever considered taking a course in
remedial reading?  Do.  People simply aren't saying the things that you
are reading into them.  

	'San Diego' presumably refers to Laura's article.  I don't have
it at hand, but I don't recall anything about "there is no need for people
to study the theory of computing" either there or anywhere else.

>   Any student who can get all the way through a 4 year program in *ANYTHING*
>and not realize that this program was *NOT* preparing them for what they 
>wished to be prepared has no sympathy from me!  If they'd take a look at the
>real world outside their classroom, do a little research, they would have a
>pretty damned good idea what the curriculum they're being offered was aimed
>at, and could effectively evaluate its worth in light of their goals.  If they
>*DON'T* do so, they're lazy, stupid slobs who haven't any business in an
>institution of higher education in the first place.  **YOU** are responsible
>for your education, the management of that education, and the quality of the
>education you receive.  No one else.
>
	My, overflowing with the milk of human kindness, aren't we.
I doubt that many college graduates want your sympathy -- most of them
prefer jobs.  Considering the current job market in programming, they'll
get them too.  However, I will say that your entire proposition is silly.

>   The proposition is really quite simple:
>
>   Computer Science, Software Engineering, and Programming are very different
>professions.  They overlap in some areas, and certainly the FUNDAMENTAL skills
>required for all three are similar, if not identical.  This, however, does NOT
>mean that we should destroy the theoretical orientation of the Computer Science
>department, in order to train Software Engineers or Programmers.  These people
>need their *OWN*, independent departments, optomized to provide them with the
>best training available for their chosen professions.
>
>   It is utterly ridiculous to suggest otherwise.
>
	Strangely enough, your conclusion is quite correct in every respect.
Interestingly enough, the people you have been so upset with are saying
exactly that.  Now, how many institututions offer degrees (or courses of
curricula) in software engineering versus computer science?  I can think
of four offering degrees in software engineeering offhand; no doubt there
are more, but there aren't many.  How many offer degrees in computer science?
Large numbers.  How many of the graduates of these programs will go on and
work as software engineers and how many will become researchers in computer
science?  Can it be that there is some slight imbalance in these numbers?

-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

g-rh@cca.UUCP (Richard Harter) (10/26/86)

In article <> coatta@utcsri.UUCP (Terry Coatta) writes:
>
>It is true that I do not know much about the industry (nor will I likely
>ever since I rather like the academic environment).  However, I did not
>exagerrate what we were told.  The people we had in to talk to us were
>very blunt -- we want programmers that DO WHAT THEY ARE TOLD -- NO room
>for personal freedom.

	Well, you were there and I wasn't, so I'll have to take your word
for it.  Again, if the people talking to you were from IBM Cobol shops and
MIS departments, I wouldn't be terribly surprised -- some of those places
are (from my viewpoint) horrid places.  The daughter of a good friend of
mine who was business programmer/systems analyst just said goodbye to ten
years experience in the field on the grounds that it was utterly destructive
to her as a way to live.

	My experience is in engineering R/D and scientific applications.
I've worked as a principal investigator, with principal investigators,
as part of a large systems group, as a numerical analyst, as an applications
programmer, as a software manager, and (these days) as a company president.
My experience doesn't match what you've been told.  Granted that you have
to work on what you have been hired to work on, but that is only reasonable.
However, to be fair, I would not have (and have never had to) worked for
any place that squatted on you.  My observation is that if you are capable
and productive then you have a lot of leeway in writing your own ticket.

>
>As for passing on misconceptions to students I say nothing about industry
>at all -- I confine myself to trying to teach them how to approach
>problems, and how to translate their solutions into good code.  You noted
>that there were diffrences between the academic style of programming and
>the "production quality" style of programming, and I agree by and large
>with your distinctions.  I'm even willing to go so far as to agree
>that academics shoulld be aware of the differences, but NOT that they
>should be required to teach the other style.  In computer science
>what matters is that you can think up a good solution to a problem,
>and that you can translate that into good code, not that you can
>produce a product that XXX company can make a fortune on.  If part of
>the problem you are given is that you have to work in teams, then part
>of a good solution is to ensure that your code integrates nicely
>with the system.  Similarly if part of the problem description stipulates
>that a good user interface is required, then that must be part of the
>solution.  These are not global concerns to be applied to everything
>the student does -- it they tried we'd never have enough time to get
>around to things that do matter for academics, like analyzing algorithms,
>doing the group theory related to numerical analysis, doing the
>probability theory related to LANs, etc.  

	You make some good points.  As somebody said, there is only
so much time in a college program.  There isn't time to give someone
ten years industrial experience in four years of college and it shouldn't
be attempted.
>
>I think the large difference between our viewpoints is that you want
>computer science to be like engineering -- fill them up with the
>formulas, rules and techniques that will produce practical results --
>I want scientists and experimenters -- give them the background
>and the theory they'll need to explore the unknown territory of
>computer science.  The world needs both types of people, but
>to force the values of one grop on the other is wasting peoples
>time, and I think its pretty clear which set of values I think
>belong at the university.
>
	Well, no, I don't want computer science to be like engineering.
I simply feel that most of the people who are taking computer science
should be taking software engineering, because most of them are going
to go out and get jobs as software engineers and they have an inappropriate
background if they are computer science graduates.  Computer science
should be *science* not engineering.  [Not that I am convinced that
computer science or software engineering is the right background for
software people -- the best people seem to have things like an English
major with a physics minor.]

	I would also take exception to the notion that you teach
engineering by filling them up with formulas, rules and techniques
that will produce practical results.  This is a fallacy.  A good
engineer (of whatever variety) should have a very solid and thorough
understanding of basics.  There are formulas, etc., that you should
be able to apply automatically.  However most of that sort of thing
is stuff that you can look up -- and that is one of the more important
things that an engineer does is look things up.  The basics tell you
how to evaluate what you are looking up.  The engineer does not have
to invent algorithms (although they do, liberally); it will suffice
if she can locate the algorithm (preferably several) and select the
appropriate one.

	They difference between engineering and science, if you
will, is that engineering uses algorithms, science investigates them.
[We are talking SE and CS here.]  A good SE ought to be able to do
the science when necessary; however the ultimate object is utilitarian.
As you note, global concerns are part of engineering.  What does it
cost?  How does it fit in with everything else?  Etc.  Algorithm
X is O(n log n) whereas algorithm Y is O(n^2); however algorithm X
is expensive to implement and algorithm Y is cheap.  What are the
tradeoffs?

	Now I am not criticising CS departments for not teaching
these things; science says "what is it?" and engineering says "how
do I get the job done?".  It may be the case, as I have argued,
that most CS students should be taking SE, and that most CS departments
should be SE departments.  However I am not very sure about that;
it has been my observation that the best engineers have the best
theoretical background -- that 'practical' training tends to be
a dead end.  So maybe potential SE's should be taking CS.  But
then, again, as I have noted there are a lot of problems with a CS
degree.  A lot of students come out of the colleges with bad 
attitudes, unrealistic expectations, and useless knowledge.
[Then again, some of this is just youth, as distinct from my
generation which has bad attitudes, avaricious expectations, and
obsolete knowledge.:-)]   Part of the problem is that a good SE has to
be a generalist; you should be able to talk physics to physicists,
EE to EE's, etc.  Broadness, rather than narrowness, is of the
essence.

	Then again, these are my prejudices based on my window
into the world.  I like the pursuit of knowledge for its own sake.
I also like creating things that people will actually use; making
two blades of grass grow where one grew before, so to speak.  I
have had a nice piece of both worlds, and I have rather enjoyed it.
But that which has worked for me and seems to be true in the world
that I observe may not be true in general, so take it all with as
many grains of salt as you like.


	
-- 

Richard Harter, SMDS Inc. [Disclaimers not permitted by company policy.]
	For Cheryl :-)

anderson@uwmacc.UUCP (Jess Anderson) (10/27/86)

> > Laura Creighton		
> > ihnp4!hoptoad!laura  utzoo!hoptoad!laura  sun!hoptoad!laura
> > toad@lll-crg.arpa
and
> Terry Coatta
> Dept. of Computer Science, Univ. of Toronto, Canada M5S 1A4
> {allegra,cornell,decvax,ihnp4,linus,utzoo}!utcsri!coatta

are providing two very different views of academic computing.
The distinctions raised by their different viewpoints are, I
believe, central to *all* education. They have always been
with us, and (quite properly) they always will be, for on the
one hand we have practical knowledge (bear with me), and on
the other we have knowledge for its own sake. While in my
view each person with any sense will do his/her best to be
active in both dimensions at once, there seems to be a fairly
pronouced drift of the pendulum towards the vocational side
right now. People want jobs, and they want the universities to
certify them as employable. To the extent one doesn't want
to work *for* a university, one had better get some such
certification, for there is real competition for jobs in
computing, at least the better jobs. In addition, there is
an emphasis on being an entrepreneur these days, and no one
dreams of being anything other than a success in that. 
   People coming to the universities so they can learn how
to get a programming job are not (as many others have said
already) looking for computer SCIENCE, they are looking
for COMPUTER science; they want general knowledge (small
science) about a specific thing (big computer). And vice
versa.
   The example of the Turing lemmas is perfect. Laura gives
them short schrift; Terry sees them as the main point.
Both are right, completely and unalterably right. It is
extremely inconvenient, my friends, but there you have it.
You take your choice and you pay your price; nobody said
life is a snap. It's OK to be frustrated, but that won't
get you anywhere. Better to play both sides of the street
at once, I think, and hedge your bets.
-- 
==ARPA:====================anderson@unix.macc.wisc.edu===Jess Anderson======
|      (Please use ARPA if you can.)                     MACC              |
| UUCP: {harvard,seismo,topaz,                           1210 W. Dayton    | 
|    akgua,allegra,ihnp4,usbvax}!uwvax!uwmacc!anderson   Madison, WI 53706 |
| BITNET:                            anderson@wiscmacc   608/263-6988      |
==Words are not just blown air. They have a meaning.=====(Chuang Tsu)=======

cdshaw@alberta.UUCP (10/28/86)

In article <418@uwmacc.UUCP> anderson@uwmacc.UUCP (Jess Anderson) writes:
>(2 people) are providing two very different views of academic computing.
>.... While in my
>view each person with any sense will do his/her best to be
>active in both dimensions at once, there seems to be a fairly
>pronouced drift of the pendulum towards the vocational side
>right now. People want jobs, and they want the universities to
>certify them as employable. To the extent one doesn't want
>to work *for* a university, one had better get some such
>certification, for there is real competition for jobs in
>computing, at least the better jobs. 

A recent CACM article (Sept. 1986) explains why, to some extent, the practical
side of CS is being emphasized by undergrads. There is far more demand for
CS grads than supply, so the money is good, and pretty well anyone is able to do
the job in some cases.

What's the point? As soon as the pipeline is filled with enough people to 
satisfy industry's demand for qualified staff, the emphasis at the schools will
change to a more theoretical tone. Right now, the main problem is excess jobs
for the number of people, at all degree levels. If and when this is no longer
the case, CS will become more "academic".

>anderson@unix.macc.wisc.edu===Jess Anderson======

Chris Shaw    cdshaw@alberta
University of Alberta
CatchPhrase: Bogus as HELL !