From: Joe Marshall
Subject: Can you learn computer science from a school?
Date: 
Message-ID: <1179188400.357647.132220@o5g2000hsb.googlegroups.com>
This is clearly flamebait, so kill this thread if you aren't
interested.  I'm interested in what the consensus is.

Some of the people in this group have, or are pursuing, advanced
degrees in computer science.  Some have bachelor's degrees.  Some have
degrees in related fields.  Some have degrees in completely unrelated
fields.  Some have dropped out before getting a degree.  Some are
autodidacts.

Is there a correlation between studying computer science and knowing
about computers?  Do people gain anything by pursuing an advanced
degree in computer science, or would they be as well served by saving
the money, buying a PC, and teaching themselves?  There is a romantic
ideal of the untutored hacker that program circles around MIT grad
students.  Is that absurd or commonplace?

From: William D Clinger
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179193614.577151.319040@o5g2000hsb.googlegroups.com>
Joe Marshall wrote:
> There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

No.

Will
From: Justin  Crites
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179197589.082274.169390@e51g2000hsg.googlegroups.com>
On May 14, 7:20 pm, Joe Marshall <··········@gmail.com> wrote:
> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
>
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
>
> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

I have worked with MIT graduates before, as well as many other schools
(Stanford, Waterloo).  I have met a programmer from MIT working in a
large software company in Seattle who hadn't ever heard of "Design
Patterns" or the GoF.  I went to college; but I think if I hadn't, I'd
still program circles around him.

I think the reality is that individual variation is a much greater
factor than anything else.  University education doesn't often focus
on *software engineering*, which is what you're talking about.
College (especially at MIT) focuses on abstract theory: proofs,
algorithms, etc.  Learning this will not make you a great programmer;
and being a great programmer does not make you good at this.

You might say they're different fields.  They seem so to me.

Universities tend to teach the Theory of Computation, while writing
software teaches you Software Engineering (SE).  The argument of most
universities is that the abstract principles are the most important --
they are the constant theorems underlying the field -- while specific
technologies (Java, C++, patterns, whatever) are in constant flux;
they are incidental to some current way of doing things.  They expect,
in fact, students to teach themselves that part.  I think if you went
to a really great university, you might get a good education that
covers software patterns, good practices, and such in a useful way.

I think it is more difficult to communicate software engineering
concepts because there is no precise way to formalize them.  It's very
hard to argue why one design is better than another, because there is
no calculus to compare them.  By contrast, we can say very precisely
whether one algorithm is faster than another.  You might say that the
matter of elegant software design is an artistic matter; or perhaps
something like architecture.

To answer your question at a high level, I think I would say this:

* I would expect university-educated individuals to have a much better
grasp of computer science theory
* I would expect individuals interested in writing software to be
about the same level, whether they went to university or not.  I would
expect a person who has been writing software for 4 years, instead, to
be better than a person who went to university during that time.
From: Daniel Barlow
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179220611.24208.0@proxy02.news.clara.net>
Justin Crites wrote:
> I think it is more difficult to communicate software engineering
> concepts because there is no precise way to formalize them.  It's very
> hard to argue why one design is better than another, because there is
> no calculus to compare them.  By contrast, we can say very precisely
> whether one algorithm is faster than another.  You might say that the
> matter of elegant software design is an artistic matter; or perhaps
> something like architecture.

That's right, and it also explains why architects don't ever have 
degrees either.


-dan
From: Matthias Buelow
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <5b42kmF2q84v7U1@mid.dfncis.de>
Justin Crites wrote:

> I have met a programmer from MIT working in a
> large software company in Seattle who hadn't ever heard of "Design
> Patterns" or the GoF. 

You almost make that sound as if it were anything that he was lacking.
From: Giorgos Keramidas
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87r6p3164o.fsf@kobe.laptop>
On 14 May 2007 19:53:09 -0700, Justin  Crites <·······@gmail.com> wrote:
> I think it is more difficult to communicate software engineering
> concepts because there is no precise way to formalize them.  It's very
> hard to argue why one design is better than another, because there is
> no calculus to compare them.  By contrast, we can say very precisely
> whether one algorithm is faster than another.  You might say that the
> matter of elegant software design is an artistic matter; or perhaps
> something like architecture.

It's interesting that you would pick architecture for the comparison.

Richard P. Gabriel's writings about a "Master of Arts" in software
design, and his comparisons of software design with real-world
architectural design, are very similar to what you wrote :)
From: Dan Bensen
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <f2b0i2$imb$1@wildfire.prairienet.org>
Joe Marshall wrote:
> Some have degrees in related fields. 
> Some are autodidacts.
That's me.

> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?

I think there's an argument for a compression effect, where college
provides a structured environment for moderately talented students
but might slow down some of the really gifted geniuses.  The answer
depends too sensitively on both the individual and the school to be
meaningful.  For instance, I'm trying to fill in some of the gaps
in my knowledge from not having a CS degree, but I learned to do that
in college.

-- 
Dan
www.prairienet.org/~dsb/
From: Rob St. Amant
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <f2b4fg$19g$1@blackhelicopter.databasix.com>
Joe Marshall <··········@gmail.com> writes:

> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
>
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
>
> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

I'll bite.  There are two questions here, and they're not the same.

One is whether a university education gives someone an advantage as a
programmer, and the answer is that it depends, of course.  I have a
Ph.D. in computer science, I've programmed in Lisp (off and on) for
over 20 years, and yet, I have nowhere near the programming skills of
many on this newsgroup without the same credentials and with much less
experience.  (Closer to home, I have a friend without any kind of
degree who programs in Lisp better than I do, and I'm not bad.)

On the other hand, being a hacker is not the same as being a computer
scientist.  One might as well ask whether someone interested in being
a chemist should go to college or instead go to a chemical supply
house and teach himself.  This also depends on the individual, but I
think a standard CS curriculum helps.  I've run into self-taught
programmers, most often engineers and scientists in other disciplines,
who (for example) have had no clue about time and space complexity
analysis, who weren't aware of more than the basics of data structures
and algorithms, who might know nothing more about the capabilities of
a computer than what a single programming language provides.  This can
all be learned on one's own, of course, but it's harder.  Breadth can
be tough to acquire without guidance.
From: Ken Tilton
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <GY82i.79$k_4.30@newsfe12.lga>
Joe Marshall wrote:
> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
> 
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
> 
> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?
> 

Question malformed. Please re-enter.

Actually, the question drifted from "can you learn computer science in 
school" to "who is a better programmer", so there is no hope for this 
thread.

I once pissed off a computer science guy interviewer at an investment 
bank by saying I could not make the second interview the next day (he 
was all hot to hire me) by saying the next day was my day for 
water-skiing. The day after we met and he went batshit. How do you 
define a relational database? <shrug> Many-to-many? Nonsense, there is a 
very precise definition. I decided not to wonder aloud how, after a two 
week class in RDB, I had done the RDB design for a ten-person Forex 
project that went into production unchanged 15 months later. Then he 
said, what is your favorite hash algorithm? (Yes, he was in total 
asshole mode.) I said I do not have one. He snorted. I said, do they 
have books on hashing? Yes! he exclaimed, somehow missing my point. I 
looked at his lieutenant who was also in the interview, he seemed to be 
saying "Sorry" with his eyes. I was sorry for him, having to work for 
the nutjob. Otoh, the nutjob had fallen in love with me because I had 
corrected him: RMS can have duplicate primary keys, what you cannot do 
is /change/ a primary key. This was because I was a programmer, not a 
computer science graduate.

Well, I learned my lesson: next time I'll ask the guy if he wants to go 
water-skiing, too.

School is the only place you can learn computer science, because it is 
the only place they sit you down and drag you through the topics. Real 
programmers are out there picking up bits and pieces of the same stuff 
as need be, but they are more interested in getting programs written, 
and that comes down to good design. They do not teach good design in 
schools, and I am not sure how they could and still pose as Ivory Tower 
academia. They do not want to be trade schools, you know. Actually, I am 
not sure how one teaches good design at all. So academia looks for 
things they can point to as "science", most of which is already a Lisp 
function anyway, that big ol' ball of mud.

I think folks go for advanced degrees because they do not want to join 
the real world, and an advanced degree puts that off for quite a few 
years and possibly forever if they can become (hallelujah!) professors. 
But then they cannot program, they have to do computer science. I bet 
anyone who loves programming would get fed up with all the wasted time 
going into programming.

I must mention here an extraordinary exception, Vasily Georgialis (lord 
help me on SP), an academic who tossed off Cells-Gtk in a couple of 
weeks out of curiosity. Stunning.

Another interesting case is Guy Steeles Phd thesis cum constraints 
programming language. Now here is someone doing neat stuff, but he 
cocked it up by going theoretical vs. worrying about getting programs 
written. Why are simple linear dataflow cockroaches thriving while 
multi-way partial constraint dinosaurs are sinking to the bottom of the 
ooze? Pay attention: they're simple.

Anyway, if one has not programmed heads down for three years one likely 
does not know much about design. I am sure I write more code in a year 
than academics write in a lifetime, because we are doing different 
things. Hell, they have the sorry task of trying to pretend there /is/ 
such a thing as computer science. If there was, wouldn't everyone be 
using Lisp?

kt

-- 
http://www.theoryyalgebra.com/

"Algebra is the metaphysics of arithmetic." - John Ray

"As long as algebra is taught in school,
there will be prayer in school." - Cokie Roberts

"Stand firm in your refusal to remain conscious during algebra."
    - Fran Lebowitz

"I'm an algebra liar. I figure two good lies make a positive."
    - Tim Allen
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179303082.878167.13430@u30g2000hsc.googlegroups.com>
On May 15, 4:32 am, Ken Tilton <···········@optonline.net> wrote:
> Joe Marshall wrote:
> > This is clearly flamebait, so kill this thread if you aren't
> > interested.  I'm interested in what the consensus is.
>
> > Some of the people in this group have, or are pursuing, advanced
> > degrees in computer science.  Some have bachelor's degrees.  Some have
> > degrees in related fields.  Some have degrees in completely unrelated
> > fields.  Some have dropped out before getting a degree.  Some are
> > autodidacts.
>
> > Is there a correlation between studying computer science and knowing
> > about computers?  Do people gain anything by pursuing an advanced
> > degree in computer science, or would they be as well served by saving
> > the money, buying a PC, and teaching themselves?  There is a romantic
> > ideal of the untutored hacker that program circles around MIT grad
> > students.  Is that absurd or commonplace?
>
> Question malformed. Please re-enter.
>
> Actually, the question drifted from "can you learn computer science in
> school" to "who is a better programmer", so there is no hope for this
> thread.
>
> I once pissed off a computer science guy interviewer at an investment
> bank by saying I could not make the second interview the next day (he
> was all hot to hire me) by saying the next day was my day for
> water-skiing. The day after we met and he went batshit. How do you
> define a relational database? <shrug> Many-to-many? Nonsense, there is a
> very precise definition. I decided not to wonder aloud how, after a two
> week class in RDB, I had done the RDB design for a ten-person Forex
> project that went into production unchanged 15 months later. Then he
> said, what is your favorite hash algorithm? (Yes, he was in total
> asshole mode.) I said I do not have one. He snorted. I said, do they
> have books on hashing? Yes! he exclaimed, somehow missing my point. I
> looked at his lieutenant who was also in the interview, he seemed to be
> saying "Sorry" with his eyes. I was sorry for him, having to work for
> the nutjob. Otoh, the nutjob had fallen in love with me because I had
> corrected him: RMS can have duplicate primary keys, what you cannot do
> is /change/ a primary key. This was because I was a programmer, not a
> computer science graduate.
>
> Well, I learned my lesson: next time I'll ask the guy if he wants to go
> water-skiing, too.

Sometimes less you know , the better. Once I screwed my job by
informing the interviewer (also the owner) that he was using GPL code
in his proprietory product and that he must GPL all of his work.
Untill that everything went great, we even arranged the salary terms
and I even interested him about lisp (yes I'm preaching lisp
everywhere I can,even in interviews, i know it's bad thing but I
couldn't help it). Afterwards he changed four face colors in 10
seconds and later call me that they'll hire another guy.

.
From: John Thingstad
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <op.tse3evmjpqzri1@pandora.upc.no>
On Wed, 16 May 2007 10:11:22 +0200, fireblade  
<·················@gmail.com> wrote:

>
> Sometimes less you know , the better. Once I screwed my job by
> informing the interviewer (also the owner) that he was using GPL code
> in his proprietory product and that he must GPL all of his work.
> Untill that everything went great, we even arranged the salary terms
> and I even interested him about lisp (yes I'm preaching lisp
> everywhere I can,even in interviews, i know it's bad thing but I
> couldn't help it). Afterwards he changed four face colors in 10
> seconds and later call me that they'll hire another guy.
>

Perhaps, less you tell.
Though I think you are probably better off in the end ;)

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
From: Giorgos Keramidas
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87veef16fh.fsf@kobe.laptop>
On Mon, 14 May 2007 22:32:00 -0400, Ken Tilton <···········@optonline.net> wrote:
> Question malformed. Please re-enter.
>
> Actually, the question drifted from "can you learn computer science in
> school" to "who is a better programmer", so there is no hope for this
> thread.

Excellent points, as usual, Kenny :)

> [...]
> I think folks go for advanced degrees because they do not want
> to join the real world, and an advanced degree puts that off
> for quite a few years and possibly forever if they can become
> (hallelujah!)  professors. But then they cannot program, they
> have to do computer science. I bet anyone who loves programming
> would get fed up with all the wasted time going into
> programming.

I think the last word of the above was supposed to be something
else than 'programming', right?

Thanks for the marvellous post, anyway.
From: Ken Tilton
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <4658D7C6.4070808@optonline.net>
Giorgos Keramidas wrote:
> On Mon, 14 May 2007 22:32:00 -0400, Ken Tilton <···········@optonline.net> wrote:

>>I think folks go for advanced degrees because they do not want
>>to join the real world, and an advanced degree puts that off
>>for quite a few years and possibly forever if they can become
>>(hallelujah!)  professors. But then they cannot program, they
>>have to do computer science. I bet anyone who loves programming
>>would get fed up with all the wasted time going into
>>programming.
> 
> 
> I think the last word of the above was supposed to be something
> else than 'programming', right?

Yep. Probably "school work".

I once visited NYU to ask about their advanced CS programs, this after 
six years of rather intense real-world systems development, everything 
from logic games to physical simulations and business application 
meta-programming that salvaged dying projects I had joined. Spoke to a 
professor who snorted at my background, suggested I get a book on data 
structures. OK. I looked at their course catalog, and realized I would 
be working my tail off earning credits, paying tuition, satisfying 
cranky professors, and studying abstruse topics probably too hard for a 
simple application programmer like me when I could be busy programming, 
learning coolio stuff like finite state machines when I had to. Of 
course if my dream in life had been to be a professor, the paper chase 
would make sense and be fine, but my love of programming has always 
derived from a fascination with getting a glorified calculator to do 
amazing real-world things. For a calculator. So I just went home and 
went back to programming, realizing in part that after a certain age (or 
is it amount of experience?) it is hard to put up with the formal 
schooling game. I always tell youngsters it is OK to take one year off 
before grad school, but for the love of god don't take two.

kt
From: Jeff Rollin
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <g9CdnX7gm95IRsXbnZ2dnUVZ8tqinZ2d@pipex.net>
In the last episode, on Sunday 27 May 2007 01:58, Ken Tilton wrote:

 I always tell youngsters it is OK to take one year off
> before grad school, but for the love of god don't take two.
> 

I think this depends on the person. I know several people who have gone back
to university (at various levels) with much, much more than "one or two"
years between undergrad and graduate courses, and done well. In some cases
they didn't even get undergraduate degrees until their late twenties or
even later.

I don't recommend waiting 20 or so years, but it's not impossible.

Jeff
From: Ken Tilton
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <5256i.1578$Nj2.850@newsfe12.lga>
Jeff Rollin wrote:
> In the last episode, on Sunday 27 May 2007 01:58, Ken Tilton wrote:
> 
>  I always tell youngsters it is OK to take one year off
> 
>>before grad school, but for the love of god don't take two.
>>
> 
> 
> I think this depends on the person. 

Never look a gift joke in the mouth.

kt
From: Mark Tarver
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179232537.036580.113670@p77g2000hsh.googlegroups.com>
On 15 May, 01:20, Joe Marshall <··········@gmail.com> wrote:
> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
>
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
>
> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

This reminds me of another debate which takes place in martial arts -
about martial arts students and street fighters. Geoff Thompson is a
trained martial artist, a karateka, a grappler and the victor in over
200 street fights as a bouncer.  In that his book 'Watch My Back' he
compares two styles of fighter - the school-trained martial artist and
the untutored  but hardened street fighter.

What Geoff says is roughly this.  The street fighter fights in a ring
with no rules and no boundaries.  The school-trained martial artist
trains for a circumscribed contest with known parameters. The street
fighter, if transplanted to the tournanment ring, will often fair
poorly.   Contrariwise the trained martial artist in no-holds fighting
will generally be taken out by a good street fighter unless his level
of skill is very high and he has trained for combat situations.
*However, the combination of the two, the street fighter who has also
formally trained in the dojo, will surpass either.*

I think this is roughly true for programmers.  There are a number of
people who have a natural gift for programming and just pick it up; in
the same way that some people have a gift for fighting and pick that
up.    As programmers they will surpass the average level ability CS
student in a straight programming contest.  These naturals may not
have passed through a CS course or sat a single CS lecture, but they
can walk the walk and do the job.   These people we can call 'street
programmers' - hackers without any formal qualifications, who have
picked up their knowledge on the fly, but who can blow most
competitors away when it comes to code productivity.

If you look at computer scientists then the picture is rather
complex.   At the professor end you can more or less divide the
faculty into implementors and theoreticians with a few straddling the
divide.   The bottom line for CS is that professors do not get
promoted for being good implementors but for writing papers and
getting grants (see 'Why I am Not a Professor' at the bottom of this
post for my take on this).    Hence there are some computer scientists
who are frankly lousy at writing programs because writing programs is
not what they do.   There are professors who actually *look down* on
implementors as sort of manual workers who exist to implement the
grand designs of people like themselves.    Typically coding is
thought of as the preserve of post-doctoral RAs.

In academia, you'll actually find that career-wise, theoreticians
enjoy a status advantage over implementors because of their
productivity as measured by papers.  A large implementation can
consume a year and yield one paper whereas a theoretician can churn
out 3-4 papers in the same time period.  The metric is, of course,
meaningless, but thats how academics works.  During my time at the
LFCS, Rod Burstall actually felt impelled to give a lecture on why
implementors were important to a bunch of recycled mathematicians
doing CS.   They were not interested - as one put it "Hacking code is
not why we're here."

The best are the people who straddle the divide; who have a grasp of
theory and make it work on the computer.   In theory thats what
professors should be attempting to graduate from CS courses.  Ergo the
graduate student from CS should be better than the street programmer.
However it does not work like that.

The reason why this does not happen is complex, but the martial arts
analogy comes back to mind again.  There are some schools of martial
arts which are essentially empty.  These are schools  where the
students train in katas which have to be memorised with little or no
understanding of application.   These schools avoid subjecting their
students to any combat situations and emphasise artifical grading
systems with little relationship to combat effectiveness.    The
graduates of these schools are not a match for the experienced street
fighter.

Unfortunately a lot of CS departments are like these empty dojos.

In CS a lot of student time can be taken up in courses which require
little or no programming expertise.  In the UK it is quite possible to
walk off with a CS degree and be quite hopeless at street
programming.  Why is this?   For several reasons.

First, a pick-and-mix approach to education which allows weak
programmers to avoid programming-intensive courses.

Second, CS courses at university are rarely bleeding edge.     Staying
ahead of the game , knowing all the latest Java tools, being up at 1
a.m. on forums swapping information with other street programmers, is
not what professors want to do after they go home at 6 p.m.    With
the weight of admin, teaching, reading and scribbling papers to be
done there is simply not the time for the street programmer's
lifestyle.   So students learn what the professor feels comfortable
with.   And people who do know the bleeding edge can get better money
(and often better conditions) in industry

Third, (and for me, very importantly) is the conservatism of CS
courses.    At Leeds in the early '90s the language of choice for
students was Pascal.  Nearly all the staff knew Pascal had to go - it
was old already.  I attended a meeting in which computer scientists
chased the question of with what to replace Pascal.   Several hours
later Pascal was still there because they could not get an agreement
on the issue.   Seven years later I attended a meeting on the same
subject with the same lack of agreement.
It took eight years to move from Pascal to C++.

Trying to do anything innovative in teaching at University or
instituting change is a risky business.   If your course is
foundational  then your teaching is tied to the courses which list
your course as a requirement .  Try to do anything radical, even a
change of approach, and you can be in trouble.  I quit one post simply
because I made changes that made the Old Guard nervous.    I got the
name of a radical.  Change is threatening.

And all this is a damned shame, because actually, with the right CS
course, a student graduate will, ceteris paribus, surpass his street
programming counterpart.   The right CS course begins with programming
and builds on it.  But the right language is important and its not C
or C++.   A good programming language has to be a language for
*describing* algorithms, not just a means of beating the computer into
doing what its told (exit left C++, C, Java and Perl).    At Leeds I
was always criticised for teaching functional programming *whatever*
module I was given to teach.  The criticism was misplaced.  The point
was if you want to describe algorithms precisely you need a language
to do it.  My having to teach FP every time was the consequence of the
students' inadequate grounding which required going over ground they
should have mastered in the first term of their first year (enter
right 'The Structure and Interpretation of Computer Programs').

So to conclude this long post.   Yes, the street programmer is
generally better than the CS graduate - at programming because CS
courses are often so woeful.  And the professor will beat the street
programmer hands-down in the black arts of churning out papers.  But
in CS departments which are not empty dojos, the graduates will have a
greater range than the street programmer.

Mark
From: Mark Tarver
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179233837.783845.68180@l77g2000hsb.googlegroups.com>
On 15 May, 13:35, Mark Tarver <··········@ukonline.co.uk> wrote:
> On 15 May, 01:20, Joe Marshall <··········@gmail.com> wrote:
>
> > This is clearly flamebait, so kill this thread if you aren't
> > interested.  I'm interested in what the consensus is.
>
> > Some of the people in this group have, or are pursuing, advanced
> > degrees in computer science.  Some have bachelor's degrees.  Some have
> > degrees in related fields.  Some have degrees in completely unrelated
> > fields.  Some have dropped out before getting a degree.  Some are
> > autodidacts.
>
> > Is there a correlation between studying computer science and knowing
> > about computers?  Do people gain anything by pursuing an advanced
> > degree in computer science, or would they be as well served by saving
> > the money, buying a PC, and teaching themselves?  There is a romantic
> > ideal of the untutored hacker that program circles around MIT grad
> > students.  Is that absurd or commonplace?
>
> This reminds me of another debate which takes place in martial arts -
> about martial arts students and street fighters. Geoff Thompson is a
> trained martial artist, a karateka, a grappler and the victor in over
> 200 street fights as a bouncer.  In that his book 'Watch My Back' he
> compares two styles of fighter - the school-trained martial artist and
> the untutored  but hardened street fighter.
>
> What Geoff says is roughly this.  The street fighter fights in a ring
> with no rules and no boundaries.  The school-trained martial artist
> trains for a circumscribed contest with known parameters. The street
> fighter, if transplanted to the tournanment ring, will often fair
> poorly.   Contrariwise the trained martial artist in no-holds fighting
> will generally be taken out by a good street fighter unless his level
> of skill is very high and he has trained for combat situations.
> *However, the combination of the two, the street fighter who has also
> formally trained in the dojo, will surpass either.*
>
> I think this is roughly true for programmers.  There are a number of
> people who have a natural gift for programming and just pick it up; in
> the same way that some people have a gift for fighting and pick that
> up.    As programmers they will surpass the average level ability CS
> student in a straight programming contest.  These naturals may not
> have passed through a CS course or sat a single CS lecture, but they
> can walk the walk and do the job.   These people we can call 'street
> programmers' - hackers without any formal qualifications, who have
> picked up their knowledge on the fly, but who can blow most
> competitors away when it comes to code productivity.
>
> If you look at computer scientists then the picture is rather
> complex.   At the professor end you can more or less divide the
> faculty into implementors and theoreticians with a few straddling the
> divide.   The bottom line for CS is that professors do not get
> promoted for being good implementors but for writing papers and
> getting grants (see 'Why I am Not a Professor' at the bottom of this
> post for my take on this).    Hence there are some computer scientists
> who are frankly lousy at writing programs because writing programs is
> not what they do.   There are professors who actually *look down* on
> implementors as sort of manual workers who exist to implement the
> grand designs of people like themselves.    Typically coding is
> thought of as the preserve of post-doctoral RAs.
>
> In academia, you'll actually find that career-wise, theoreticians
> enjoy a status advantage over implementors because of their
> productivity as measured by papers.  A large implementation can
> consume a year and yield one paper whereas a theoretician can churn
> out 3-4 papers in the same time period.  The metric is, of course,
> meaningless, but thats how academics works.  During my time at the
> LFCS, Rod Burstall actually felt impelled to give a lecture on why
> implementors were important to a bunch of recycled mathematicians
> doing CS.   They were not interested - as one put it "Hacking code is
> not why we're here."
>
> The best are the people who straddle the divide; who have a grasp of
> theory and make it work on the computer.   In theory thats what
> professors should be attempting to graduate from CS courses.  Ergo the
> graduate student from CS should be better than the street programmer.
> However it does not work like that.
>
> The reason why this does not happen is complex, but the martial arts
> analogy comes back to mind again.  There are some schools of martial
> arts which are essentially empty.  These are schools  where the
> students train in katas which have to be memorised with little or no
> understanding of application.   These schools avoid subjecting their
> students to any combat situations and emphasise artifical grading
> systems with little relationship to combat effectiveness.    The
> graduates of these schools are not a match for the experienced street
> fighter.
>
> Unfortunately a lot of CS departments are like these empty dojos.
>
> In CS a lot of student time can be taken up in courses which require
> little or no programming expertise.  In the UK it is quite possible to
> walk off with a CS degree and be quite hopeless at street
> programming.  Why is this?   For several reasons.
>
> First, a pick-and-mix approach to education which allows weak
> programmers to avoid programming-intensive courses.
>
> Second, CS courses at university are rarely bleeding edge.     Staying
> ahead of the game , knowing all the latest Java tools, being up at 1
> a.m. on forums swapping information with other street programmers, is
> not what professors want to do after they go home at 6 p.m.    With
> the weight of admin, teaching, reading and scribbling papers to be
> done there is simply not the time for the street programmer's
> lifestyle.   So students learn what the professor feels comfortable
> with.   And people who do know the bleeding edge can get better money
> (and often better conditions) in industry
>
> Third, (and for me, very importantly) is the conservatism of CS
> courses.    At Leeds in the early '90s the language of choice for
> students was Pascal.  Nearly all the staff knew Pascal had to go - it
> was old already.  I attended a meeting in which computer scientists
> chased the question of with what to replace Pascal.   Several hours
> later Pascal was still there because they could not get an agreement
> on the issue.   Seven years later I attended a meeting on the same
> subject with the same lack of agreement.
> It took eight years to move from Pascal to C++.
>
> Trying to do anything innovative in teaching at University or
> instituting change is a risky business.   If your course is
> foundational  then your teaching is tied to the courses which list
> your course as a requirement .  Try to do anything radical, even a
> change of approach, and you can be in trouble.  I quit one post simply
> because I made changes that made the Old Guard nervous.    I got the
> name of a radical.  Change is threatening.
>
> And all this is a damned shame, because actually, with the right CS
> course, a student graduate will, ceteris paribus, surpass his street
> programming counterpart.   The right CS course begins with programming
> and builds on it.  But the right language is important and its not C
> or C++.   A good programming language has to be a language for
> *describing* algorithms, not just a means of beating the computer into
> doing what its told (exit left C++, C, Java and Perl).    At Leeds I
> was always criticised for teaching functional programming *whatever*
> module I was given to teach.  The criticism was misplaced.  The point
> was if you want to describe algorithms precisely you need a language
> to do it.  My having to teach FP every time was the consequence of the
> students' inadequate grounding which required going over ground they
> should have mastered in the first term of their first year (enter
> right 'The Structure and Interpretation of Computer Programs').
>
> So to conclude this long post.   Yes, the street programmer is
> generally better than the CS graduate - at programming because CS
> courses are often so woeful.  And the professor will beat the street
> programmer hands-down in the black arts of churning out papers.  But
> in CS departments which are not empty dojos, the graduates will have a
> greater range than the street programmer.
>
> Mark

Oh ... the promised link (also oddly the most popular page on Lambda
Associates)

http://www.lambdassociates.org/Blog/decline.htm

Mark
From: Didier Verna
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <mux7ira2n4d.fsf@uzeb.lrde.epita.fr>
Mark Tarver <··········@ukonline.co.uk> wrote:

> This reminds me of another debate which takes place in martial arts -
> about martial arts students and street fighters. Geoff Thompson is a
> trained martial artist, a karateka, a grappler and the victor in over
> 200 street fights as a bouncer. In that his book 'Watch My Back' he
> compares two styles of fighter - the school-trained martial artist and
> the untutored but hardened street fighter.
>
> What Geoff says is roughly this.  The street fighter fights in a ring
> with no rules and no boundaries.  The school-trained martial artist
> trains for a circumscribed contest with known parameters. The street
> fighter, if transplanted to the tournanment ring, will often fair
> poorly.   Contrariwise the trained martial artist in no-holds fighting
> will generally be taken out by a good street fighter unless his level
> of skill is very high and he has trained for combat situations.
> *However, the combination of the two, the street fighter who has also
> formally trained in the dojo, will surpass either.*

And in turn this reminds me of the same discussion that takes place in
Jazz music, between autodidact musicians and fresh-from-Berklee ones[1]. 
The self-taught one will often produce very personal and possibly
surprising music (on which the f-f-b one would have a hard time saying
anything interesting). And conversely, he would have a hard time playing
on "academic" tunes (Giant Steps or Stella by Starlight for instance)
that the FFB guy spent a lot of time analysing, re-harmonizing in every
way the teacher demonstrated.

As a Jazz teacher (and to some extend a computer science one), the key
factor to me is "learning by necessity". You're never good at the things
you don't feel the need for. A most spectacular side-effect of academic
Jazz teaching is the amount of uninteresting musicians that are produced
every year. That's because the guys learn tools (harmonic analysis,
instrument technique etc) without having the use for them. Just as if
you would learn and practice a natural language by making sentences
without actually having anything to say. A Jazz improvisation without
meaning, however complex on the technical, rhythmic, or harmonic plan,
is simply boring; not music at all.

So my point is that you've got to be an autodidact first, because this
naturally shows your own directions; the things you are, or want to be,
good at. Then, a good teacher would spot this and provide the academic
background on-demand, only to support you in your own evolution. And
then again, a lesson that comes just in time to unlock a door in front
of which you're stuck is usually well accepted and well remembered. As a
guitar teacher, I try to be that kind of teacher (I explicitely
authorize my students to pretend to be self-taughts ;-). In computer
science, this is a bit more complicated to implement...





But anyway, nobody can beat an A�kidoka ;-)





Footnotes: 
[1]  that all sound the same if you ask me ;-)

-- 
Read the Jazz Blog !! http://jazzblog.didierverna.com

Didier Verna, ······@lrde.epita.fr, http://www.lrde.epita.fr/~didier

EPITA / LRDE, 14-16 rue Voltaire   Tel.+33 (1) 44 08 01 85
94276 Le Kremlin-Bic�tre, France   Fax.+33 (1) 53 14 59 22   ······@xemacs.org
From: Tamas Papp
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87veeus4l3.fsf@pu100877.student.princeton.edu>
Joe Marshall <··········@gmail.com> writes:

> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

Hi Joe,

I don't think it is flamebait, but it might be OT -- nevertheless I
couldn't resist answering.

I am an economist, and among economists (and natural scientists) the
general attitude towards programming is that if you need it, you will
learn it on your own.  I had a PC as a teenager, so I started
programming then and I kept learning new languages.

The only thing I miss: I wish someone had oriented me towards Lisp 10
years ago.  I started with Pascal (shudder), then C, then I thought
C++ was cool (double shudder), then I wrote my programs using R (quite
nice) and finally I have started Lisp.  OTOH, it seems that even a CS
education won't necessarily help in finding the "good" languages.

But I won't program circles around MIT grad students -- I am content
to solve economic models ;-)

The biggest obstacle when learning to program on your own is the lack
of good mentors.  This was a problem for me when I started (I didn't
have internet in the early 90s), but nowadays people can just join a
newsgroup where people are happy to help.

Tamas

-- 
Posted via a free Usenet account from http://www.teranews.com
From: ········@gmail.com
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179338455.572138.273210@q75g2000hsh.googlegroups.com>
On May 15, 7:34 am, Tamas Papp <······@gmail.com> wrote:
> OTOH, it seems that even a CS
> education won't necessarily help in finding the "good" languages.

Depends.  The introductory CS course at MIT for many years taught
Lisp.  (Is that still true?  I think I heard that it might change...)

 -jimbo
From: Tim Bradshaw
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179243746.693413.237940@q75g2000hsh.googlegroups.com>
On May 15, 1:20 am, Joe Marshall <··········@gmail.com> wrote:
> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.

I don't have any general opinion, and the point I do have is somewhat
one-sided.

My impression is that a lot of CS degrees are taught by and to people
with what I think of as "discrete minds".  "Discrete" people in this
sense are people who are good at counting stuff and doing logic
dealing with fiddly boundary conditions and things like that, and so
they're good at programming which is full of exactly that stuff.  The
classic discrete person is a logician, number theorist, accountant or
CS person.

Traditional hard science & engineering degrees are more often taught
by and to people with "continuous minds".  "Continuous" people are
good at calculus and analysis (in the maths sense) and have a good
feeling for approximation and error in continuous systems.  The
classic continuous person is a physicist, an applied mathematician, an
engineer or an investment banker.

Continuous people find programming hard because epsilon-delta
arguments don't work: you can't miss out a few brackets or get a
conditional a bit wrong in your program and have it work, even
slightly.  For continuous people programming is an endless battle
against

So discrete people make better programmers.  The vast majority of
programmers are discrete people.

But discrete people have a fatal flaw which is that, well, they're not
good at epsilon-delta arguments.  The caricature discrete person spend
his (yes) time optimizing bits of code that never get used, because he
finds it hard to get a view of what the system is like in approximate
terms rather than as a huge mass of switches.

As systems get larger and faster the view of them as a mass of
switches becomes less interesting and the view of them as system about
which meaningful approximations can be made becomes more interesting.
Bradshaw's third law is: "it's not a giant PDP11".

Discrete people still tend to be better programmers, because they can
handle the mass of fiddly details without hitting things. However the
continuous aspects are becoming more important and may/have become
dominant. I think that really good programmers can do both, and are
terribly rare.

--tim
From: Ties  Stuij
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179249087.171445.279240@o5g2000hsb.googlegroups.com>
I get the impression that a lot of the posts here use self-taught as a
synonym for untaught. But i find that you can learn yourself the
theoretical background behind programming rather well through books
bought on the internet. And those total a hell of a lot less than a
university degree. Of course you miss the social net of correction,
but you also miss the opportunity to waste an awful lot of time in
demoralizing classes with little added or even subtracted value,
except for being strongholds of the motivator of punishment.

/Ties
From: Mark Tarver
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179249435.588785.294000@o5g2000hsb.googlegroups.com>
On 15 May, 18:11, Ties  Stuij <·······@gmail.com> wrote:
> I get the impression that a lot of the posts here use self-taught as a
> synonym for untaught. But i find that you can learn yourself the
> theoretical background behind programming rather well through books
> bought on the internet. And those total a hell of a lot less than a
> university degree. Of course you miss the social net of correction,
> but you also miss the opportunity to waste an awful lot of time in
> demoralizing classes with little added or even subtracted value,
> except for being strongholds of the motivator of punishment.
>
> /Ties

Actually - thinking about it - nearly the whole staff of my CS
department circa 1990 were *not trained in CS but entered CS from
another discipline.*    In that sense computing is like the Wild
West.  If you can shoot straight and stay on your horse, you're in -
and it doesn't matter where you came from.

Mark
From: Raymond Wiker
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <m2646ukkv3.fsf@RawMBP.local>
Ties  Stuij <·······@gmail.com> writes:

> I get the impression that a lot of the posts here use self-taught as a
> synonym for untaught. But i find that you can learn yourself the
> theoretical background behind programming rather well through books
> bought on the internet. And those total a hell of a lot less than a
> university degree. Of course you miss the social net of correction,
> but you also miss the opportunity to waste an awful lot of time in
> demoralizing classes with little added or even subtracted value,
> except for being strongholds of the motivator of punishment.

	I agree to a certain extent, but nowadays many self-taught
programmers have a very large network that provides the required
correction. This network is in the form of a group of peers or "users"
of the software that they write and PUBLISH. This network is made
possible by the internet (hopefully you all saw that one coming),
which serves as a means to publish, disseminate, analyse and comment.
From: Robert Strandh
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <6wabw6inuf.fsf@serveur5.labri.fr>
Joe Marshall <··········@gmail.com> writes:

> Is there a correlation between studying computer science and knowing
> about computers?  

It is probably slightly greater than zero.  On the other hand, I agree
with Dijkstra when he said:

    Computer science is no more about computers than astronomy is
    about telescopes.

so you should not expect such a correlation.  If you expect to learn
about computers, you would probably be better off studying computer
engineering. 

> Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  

I think these are relatively unrelated topics.  You will not learn
much computer science by buying a PC, and you will not learn much
about PCs by studying computer science. 

> There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

It is probably commonplace.  It can be argued that you need many years
of practice to become a good programmer, and few grad students (MIT or
otherwise) have that long a programming experience, which they will
instead acquire after graduation. 

If you instead compare CS graduates with (say) 10 years of programming
experience to programmers without a CS degree but with 10 years of
programming experience, you will no doubt still find some such cases,
but I would guess that on the average those with a CS degree do better
than those without.  But I have no proof of that. 

-- 
Robert Strandh

---------------------------------------------------------------------
Greenspun's Tenth Rule of Programming: any sufficiently complicated C
or Fortran program contains an ad hoc informally-specified bug-ridden
slow implementation of half of Common Lisp.
---------------------------------------------------------------------
From: Michael Sullivan
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hy7x4x.tbueeq1yeg2f4N%michael@bcect.com>
Robert Strandh <·······@labri.fr> wrote:

> If you instead compare CS graduates with (say) 10 years of programming
> experience to programmers without a CS degree but with 10 years of
> programming experience, you will no doubt still find some such cases,
> but I would guess that on the average those with a CS degree do better
> than those without.  But I have no proof of that. 

I would guess that too.

A more interesting comparison would be between those with 10 years of
programming and no CS degree, and those with a CS Degree and 7 years of
other programming.

IOW, which is more valuable, 3 years of programming experience or an
MSCS Degree?

I actually believe that the concepts learned in CS can be valuable
enough that they enable catch up, but the value of different degrees to
diffferent students varies tremendously.


Michael

-- 
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
From: Rainer Joswig
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <joswig-EBEC22.09582115052007@news-europe.giganews.com>
In article <························@o5g2000hsb.googlegroups.com>,
 Joe Marshall <··········@gmail.com> wrote:

> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
> 
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
> 
> Is there a correlation between studying computer science and knowing
> about computers?

Students of computer science should have some better understanding
of computers than, say, students of gardening.

>  Do people gain anything by pursuing an advanced
> degree in computer science,

For what would you need that?

> or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

Hacking is not exactly the same as Computer Science.

The one biggest advantage studying computer science for
people who want to work as a programmer/hacker later is:
you got a better overview over the field and should have been
taught/trained some techniques that are handy
(how to learn, to learn, to write a paper, to discuss
topics, you learn some advanced maths, ...).
The 'hacker'/programmer without this overview is (my feeling) not
as flexible when technology in the market changes.
You see that in some countries where cheap workers (with
all kinds of engineering degrees) are barely trained -
they just learn some basics ('Java') and then get the
maintenance (or worse: the development) of complex software.

Programming languages and tools that 'force' the developer
to use ready-made components and that are pre-adopted
to some problem domain require less 'flexible' skills than, say,
Lisp programming where the target domains often require
prototyping of new ideas. You can use a programming
language where you wait for a new WHILE construct
three years or you can use a programming language where
you write the WHILE construct in ten minutes yourself.
What one need is the idea that this flexibility is
possible - maybe a good education helps to acquire that
flexibility of the mind.

-- 
http://lispm.dyndns.org
From: John Thingstad
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <op.tsc34csipqzri1@pandora.upc.no>
On Tue, 15 May 2007 02:20:00 +0200, Joe Marshall <··········@gmail.com>  
wrote:

> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
>
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
>
> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?
>

Well most people who study computer science are interested in computers.
That being said the skill level varies greatly.
I think most people here have learned more from their own self study than  
they ever
learned in school.

School can provide you with a road map and a more rounded knowledge of
programming. Self made hackers often tend to know only a language or two  
well.

I have worked with both. And yes some self made hackers can run rings  
around
educated hackers. The student who is in it for the money does what is told
and nothing more is no match for a dedicated hacker who spends 14 hours a
day developing real systems. Then again many students do way more than
is in the curriculum.

So I see no definite yes/no answer here.

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
From: Wade Humeniuk
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <m2hcqei5au.fsf@telus.net.no.spam>
Joe Marshall <··········@gmail.com> writes:

> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
>
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
>
> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

I think the untutored hacker ideal is just a myth.  I have yet
to meet one whose code is not awful to look at.  It is literally
"hacked" together.

A number of ideas seem to be munged into one ball.

- Computer Science.
- Programming.
- Algorithm Development.
- Domain Expertise.

The one that is most overlooked is domain expertise.  The best example
of this can be seen in Norvig's PAIP and the idea of a "grammar".  The
idea and the structure came from linguists, not computer science.
That's who the real developers/programmers are, the ones that develop
the knowledge framework.  They "program" human minds.

People tend to ignore Domain Experts these days and suffer Greenspun's
10th Rule.  Untutored means uninformed to me.


Wade
From: Ken Tilton
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <FNi2i.4$O_2.0@newsfe12.lga>
Wade Humeniuk wrote:
> Joe Marshall <··········@gmail.com> writes:
> 
> 
>>This is clearly flamebait, so kill this thread if you aren't
>>interested.  I'm interested in what the consensus is.
>>
>>Some of the people in this group have, or are pursuing, advanced
>>degrees in computer science.  Some have bachelor's degrees.  Some have
>>degrees in related fields.  Some have degrees in completely unrelated
>>fields.  Some have dropped out before getting a degree.  Some are
>>autodidacts.
>>
>>Is there a correlation between studying computer science and knowing
>>about computers?  Do people gain anything by pursuing an advanced
>>degree in computer science, or would they be as well served by saving
>>the money, buying a PC, and teaching themselves?  There is a romantic
>>ideal of the untutored hacker that program circles around MIT grad
>>students.  Is that absurd or commonplace?
> 
> 
> I think the untutored hacker ideal is just a myth.  I have yet
> to meet one whose code is not awful to look at.  It is literally
> "hacked" together.

I think this is the last place you want to use a statistical approach, 
because you have to find the right untutored hacker, and I can assure 
you you will search hi and lo before you find any programmer who writes 
decent code. otoh, they are more likely to be a Real Programmer 
(schooled or not) because the best motivation for writing clean code is 
the experience of wrestling with unclean code, including code written by 
oneself.

kt

-- 
http://www.theoryyalgebra.com/

"Algebra is the metaphysics of arithmetic." - John Ray

"As long as algebra is taught in school,
there will be prayer in school." - Cokie Roberts

"Stand firm in your refusal to remain conscious during algebra."
    - Fran Lebowitz

"I'm an algebra liar. I figure two good lies make a positive."
    - Tim Allen
From: Tayssir John Gabbour
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179249045.817973.100800@l77g2000hsb.googlegroups.com>
On May 15, 3:29 pm, Wade Humeniuk <········@telus.net.no.spam> wrote:
> I think the untutored hacker ideal is just a myth.  I have yet
> to meet one whose code is not awful to look at.  It is literally
> "hacked" together.

Well, I've worked with a self-taught Lisp programmer whose last job
was working in a factory (never had a programming job before), and he
has a commitment to understandable code. I think he's certainly
skilled and knowledgeable.

As another example, apparently Audrey Tang is well known in the Perl
and Haskell communities for being an both an autodidact and a skilled
programmer. But I don't know anything about her code, so could be
wrong.

Personally, I taught myself programming, and it's just not hard to
write well-formatted code. Programmers just interface with the
computer in a certain way, and it's up to the individual to decide
whether she cares enough about her audience to do so readably, up to
the level of her understanding.


Of course, there are obvious advantages to a nice university
education. Even though there's a great deal wrong with universities.
They have enormous resources at their disposal. So I don't think we
need to fatalistically throw the baby out with the bathwater.

Personally, I'd like ideas on how to improve universities. Especially
a radical (as in latin's radix, or "root") perspective. I've
personally been inspired by the following, though YMMV:

    _The Underground History of American Education_
    http://www.johntaylorgatto.com/underground/toc1.htm

    "Anarchism and the Academy"
    http://www.radio4all.net/index.php?op=program-info&program_id=5099&nav=&


Tayssir
From: Wade Humeniuk
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <m24pmcsvuy.fsf@telus.net.no.spam>
I have found the articles in this thread fascinating.  There
seems to a bias against formal schooling and learning when
it comes to computers.  Comments you might hear down at
the bar about those "university ivory types" types.
(Yet in the last few years I have resorted to some
remedial academic learning that is missing from my
computer background. Know what?  There is ton of
useful knowledge in there. Problems which seemed
intractable, with a little bit of learning, no
longer are.)

The idea of something like "self-taught" surgeons operating
on me makes my skin crawl (an analogy EN used often).  Yet
"self-taught" programmer does not.  I suppose its that a
programmer cannot do as much damage (or can they?)  What
is the difference?

Try these on for size

"self-taught" airline pilot
"self-taught" manager
"self-taught" President of the United States
"self-taught" bomb maker
"self-taught" musician

Makes me think...

Wade
From: Tayssir John Gabbour
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179325861.114356.98610@y80g2000hsf.googlegroups.com>
On May 16, 4:09 pm, Wade Humeniuk <········@telus.net.no.spam> wrote:
> The idea of something like "self-taught" surgeons operating
> on me makes my skin crawl (an analogy EN used often).  Yet
> "self-taught" programmer does not.  I suppose its that a
> programmer cannot do as much damage (or can they?)  What
> is the difference?

I do think "self-taught" is a flawed misnomer. Maybe not a good idea
for me to use it. After all, none of us live in a bubble. I depended
on authors to write my books, and the cooperation of people working
with me on shared goals. I also depended on talking with people, and
their online resources.

Beyond that, I depended on the enormous bodies of work in diverse
fields, and diverse libraries. On people to perform society's
unpleasant jobs while I sit in a comfortable chair all day.

So, the question is about how institutionalized my education was.
Maybe it's less institutionalized than what's mainstream, but it's
still quite privileged. Most people couldn't even afford a computer.
Compared to most of humanity, I have access to enormous educational
resources.


Tayssir
From: Alexander Schmolck
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <yfs7ir8q1j8.fsf@gmail.com>
Wade Humeniuk <········@telus.net.no.spam> writes:

> The idea of something like "self-taught" surgeons operating
> on me makes my skin crawl (an analogy EN used often).  Yet
> "self-taught" programmer does not.  I suppose its that a
> programmer cannot do as much damage (or can they?)  What
> is the difference?

Would you rather have received medical attention from a smart, self-learned
medical practioner or from someone from within the medical mainstream and
well-versed in the art of blood-letting during the middle ages?


'as
From: Pascal Costanza
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <5b0ie0F2q9tniU1@mid.individual.net>
Wade Humeniuk wrote:
> I have found the articles in this thread fascinating.  There
> seems to a bias against formal schooling and learning when
> it comes to computers.  Comments you might hear down at
> the bar about those "university ivory types" types.
> (Yet in the last few years I have resorted to some
> remedial academic learning that is missing from my
> computer background. Know what?  There is ton of
> useful knowledge in there. Problems which seemed
> intractable, with a little bit of learning, no
> longer are.)

One of the problems I see with computer science courses at universities 
is that it is typically taught as if it were a branch of mathematics or 
natural sciences, which it is clearly not.

> The idea of something like "self-taught" surgeons operating
> on me makes my skin crawl (an analogy EN used often).  Yet
> "self-taught" programmer does not.  I suppose its that a
> programmer cannot do as much damage (or can they?)  What
> is the difference?

Medicine is a much older discipline than computer science. One should 
always keep in mind that computer science is a very young discipline - 
it's roughly 50-70 year old, depending on how you count. Computer 
science in 100 or 200 years from now will look very different (and 
things like the metaprogramming techniques we use in Lisp will be 
regarded as trivial, for example).

> Try these on for size
> 
> "self-taught" airline pilot
> "self-taught" manager
> "self-taught" President of the United States
> "self-taught" bomb maker
> "self-taught" musician
> 
> Makes me think...

All of these "disciplines" were "self-taught" at some stage in history. 
Teaching is communicating accumulated knowledge to other people. If 
there is not a lot of accumulated knowledge, there is not a lot to teach.


Pascal

P.S.: Ah, yes, and of course in order to be able to communicate 
knowledge, you have to have that knowledge yourself... ;)

-- 
My website: http://p-cos.net
Common Lisp Document Repository: http://cdr.eurolisp.org
Closer to MOP & ContextL: http://common-lisp.net/project/closer/
From: Wade Humeniuk
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <m2odkkyh4v.fsf@telus.net.no.spam>
Pascal Costanza <··@p-cos.net> writes:

> Wade Humeniuk wrote:
>> I have found the articles in this thread fascinating.  There
>> seems to a bias against formal schooling and learning when
>> it comes to computers.  Comments you might hear down at
>> the bar about those "university ivory types" types.
>> (Yet in the last few years I have resorted to some
>> remedial academic learning that is missing from my
>> computer background. Know what?  There is ton of
>> useful knowledge in there. Problems which seemed
>> intractable, with a little bit of learning, no
>> longer are.)
>
> One of the problems I see with computer science courses at
> universities is that it is typically taught as if it were a branch of
> mathematics or natural sciences, which it is clearly not.
>
>> The idea of something like "self-taught" surgeons operating
>> on me makes my skin crawl (an analogy EN used often).  Yet
>> "self-taught" programmer does not.  I suppose its that a
>> programmer cannot do as much damage (or can they?)  What
>> is the difference?
>
> Medicine is a much older discipline than computer science. One should
> always keep in mind that computer science is a very young discipline - 
> it's roughly 50-70 year old, depending on how you count. Computer
> science in 100 or 200 years from now will look very different (and
> things like the metaprogramming techniques we use in Lisp will be
> regarded as trivial, for example).
>


And of course computer scientists are "mostly-harmless".  The
techniques "yet to come" will come from academia.


>> Try these on for size
>>
>> "self-taught" airline pilot
>> "self-taught" manager
>> "self-taught" President of the United States
>> "self-taught" bomb maker
>> "self-taught" musician
>>
>> Makes me think...
>
> All of these "disciplines" were "self-taught" at some stage in
> history. Teaching is communicating accumulated knowledge to other
> people. If there is not a lot of accumulated knowledge, there is not a
> lot to teach.
>

There is not a lot of accumulated knowledge in computer science?
They have trouble passing on what little there is now. :)

Wade
From: Pascal Costanza
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <5b13v0F2qu983U1@mid.individual.net>
Wade Humeniuk wrote:

> There is not a lot of accumulated knowledge in computer science?

Compared to other, older sciences? No.

> They have trouble passing on what little there is now. :)

That's not a contradiction. ;)


Pascal

-- 
My website: http://p-cos.net
Common Lisp Document Repository: http://cdr.eurolisp.org
Closer to MOP & ContextL: http://common-lisp.net/project/closer/
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179387794.231796.133470@w5g2000hsg.googlegroups.com>
On May 16, 9:22 pm, Pascal Costanza <····@p-cos.net> wrote:
> Wade Humeniuk wrote:
> > There is not a lot of accumulated knowledge in computer science?
>
> Compared to other, older sciences? No.

Depends how you measure accumulated knowledge, after a quick look at
amazon books seems that there's more books (though not necessary
knowledge) than many far older sciences:

http://www.amazon.com/s/ref=sr_nr_n_24/103-7628348-9327059?ie=UTF8&rs=1000&keywords=music&rh=n%3A1000%2Ck%3Amusic%2Cn%3A75
Agricultural Sciences (1,292)
Archaeology (798)
Astronomy (1,153)
Behavioral Sciences (4,294)
Biological Sciences (4,232)
Chemistry (1,051)
Earth Sciences (3,279)
Education (542)
Essays & Commentary (78)
Evolution (1,132)
Experiments, Instruments & Measurement (389)
General (11,154)
History & Philosophy (4,812)
Mathematics (2,713)
Medicine (14,964)
Nature & Ecology (4,326)
Physics (3,181)
Reference (1,070)
Technology (3,108

http://www.amazon.com/s/ref=sr_nr_n_7/103-7628348-9327059?ie=UTF8&rs=1000&keywords=music&rh=n%3A1000%2Ck%3Amusic%2Cn%3A5
[some  fileds snipped]
Computer Science (5,148)
Databases (1,949)
Microsoft (1,056)
Networking (3,719)
Operating Systems (1,097)
Programming (5,167)
Software (5,338)
Web Development (4,352)


>
> > They have trouble passing on what little there is now. :)
>
> That's not a contradiction. ;)
>
> Pascal
>
> --
> My website:http://p-cos.net
> Common Lisp Document Repository:http://cdr.eurolisp.org
> Closer to MOP & ContextL:http://common-lisp.net/project/closer/
From: Raffael Cavallaro
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <2007051710280050878-raffaelcavallaro@pasdespamsilvousplaitmaccom>
On 2007-05-17 03:43:14 -0400, fireblade <·················@gmail.com> said:

> Depends how you measure accumulated knowledge, after a quick look at
> amazon books seems that there's more books (though not necessary
> knowledge) than many far older sciences:

You also have to account for what I like to call "internet bias." Some 
fields' practitioners are more likely to use the internet more heavily 
- here, computer scientists and programmers - and so Amazon, an online 
seller, will carry more material in those fields. Do you really think 
that more books have been written on Computer Science (5148) than works 
of History and Philosophy *combined* (4812), especially given the two 
millenia head start of these latter disciplines?
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179497914.075263.138300@k79g2000hse.googlegroups.com>
On May 17, 4:28 pm, Raffael Cavallaro <················@pas-d'espam-
s'il-vous-plait-mac.com> wrote:
> On 2007-05-17 03:43:14 -0400, fireblade <·················@gmail.com> said:
>
> > Depends how you measure accumulated knowledge, after a quick look at
> > amazon books seems that there's more books (though not necessary
> > knowledge) than many far older sciences:
>
> You also have to account for what I like to call "internet bias." Some
> fields' practitioners are more likely to use the internet more heavily
> - here, computer scientists and programmers - and so Amazon, an online
> seller, will carry more material in those fields. Do you really think
> that more books have been written on Computer Science (5148) than works
> of History and Philosophy *combined* (4812), especially given the two
> millenia head start of these latter disciplines?

Honestly , I don't know. Computers are popular things this days and
considering that more than 50% of all people that ever walked the
earth are still a live that might be true. Modern people are usually
literate something that in the old times was privilege of few. The
process of writing is much easier and publishing is also democratized
that anybody could write a book and publish it for zero costs on the
internet,(probably with questionable quality) or print it very cheap.
Looking at this from another view a lot of people has some kind of
computer book, at least something like Microsoft Office XP step by
step, because a lot of people depend on computers, while you could
live without History and Philosophy without a problem. The only
Philosophy book I had is my high school philosophy textbook, that's
it.
From: Tim Bradshaw
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179498938.407398.221520@u30g2000hsc.googlegroups.com>
On May 18, 3:18 pm, fireblade <·················@gmail.com> wrote:

>
> Honestly , I don't know. Computers are popular things this days and
> considering that more than 50% of all people that ever walked the
> earth are still a live that might be true.

This is not the case.  There have been more than 100 billion humans
(homo sapiens), so less than 10% are alive now.
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179744925.844620.240400@x35g2000prf.googlegroups.com>
On May 18, 4:35 pm, Tim Bradshaw <··········@tfeb.org> wrote:
> On May 18, 3:18 pm, fireblade <·················@gmail.com> wrote:
>
>
>
> > Honestly , I don't know. Computers are popular things this days and
> > considering that more than 50% of all people that ever walked the
> > earth are still a live that might be true.
>
> This is not the case.  There have been more than 100 billion humans
> (homo sapiens), so less than 10% are alive now.

Probably new Guesstimates are closer to truth
http://www.faculty.rsu.edu/~felwell/Ecology/The%20Number%20of%20People%20That%20Have%20Ever%20Lived.htm
but the other things still stand. Modern people could do far more
books, and they are more interested with computers than philosphy.
However finding good data,  calculating good statistics and mining
those data is very hard .
There's lies , damn lies and statistics.
From: Raffael Cavallaro
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <2007051811163578840-raffaelcavallaro@pasdespamsilvousplaitmaccom>
On 2007-05-18 10:18:34 -0400, fireblade <·················@gmail.com> said:

> Honestly , I don't know. Computers are popular things this days and
> considering that more than 50% of all people that ever walked the
> earth are still a live that might be true. Modern people are usually
> literate something that in the old times was privilege of few.

A Library of Congress search on the subject "History of America" alone 
turns up over 10,000 items (that's their search limit). A search on 
"Computer Science" turns up 8917. A search on "Philosophy" as subject 
of course turns up over 10,000 as well. So a less biased source than an 
online bookseller puts History&Philosophy:Computer Science at at well 
over 2:1 and probably a good deal more. Remember that all US publishers 
are required by law to send 2 copies of everything they ever publish to 
the LoC, and that the LoC has 29 million books in its collections, so 
it is far less likely to be systematically biased than Amazon.

In general, if you get information from the internet you need to take 
cognizance of the biases of the medium. People who are active in 
disciplines which are are not so involved with computers and the 
internet expect this bias, and know that (for example) the numbers of 
people in the real world involved in "online gaming" do not outnumber 
those occupied in "farming asia" by 50 to 1, even though google search 
numbers might suggest that if taken literally.

To bring this back to the original subject, this means that it is much 
easier to advance one's competence in Computer Science and programming 
largely by means of the internet than it would be to do so in many 
other disciplines.
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179746901.591362.193270@36g2000prm.googlegroups.com>
On May 18, 5:16 pm, Raffael Cavallaro <················@pas-d'espam-
s'il-vous-plait-mac.com> wrote:
> On 2007-05-18 10:18:34 -0400, fireblade <·················@gmail.com> said:
>
> > Honestly , I don't know. Computers are popular things this days and
> > considering that more than 50% of all people that ever walked the
> > earth are still a live that might be true. Modern people are usually
> > literate something that in the old times was privilege of few.
>
> A Library of Congress search on the subject "History of America" alone
> turns up over 10,000 items (that's their search limit). A search on
> "Computer Science" turns up 8917. A search on "Philosophy" as subject
> of course turns up over 10,000 as well. So a less biased source than an
> online bookseller puts History&Philosophy:Computer Science at at well
> over 2:1 and probably a good deal more. Remember that all US publishers
> are required by law to send 2 copies of everything they ever publish to
> the LoC, and that the LoC has 29 million books in its collections, so
> it is far less likely to be systematically biased than Amazon.
>
Yes those are probably the better data but lets bring this statistics
one step further:

How many copies of all those philosophy books are sold. Even if there
is more philosophy items published, how many items of those are sold.
100 books staying at authors garage won't add a lot of knowledge to
the world. I have at least 15 friends who published at least one
poetry book and only one who who published computer book . Guess who
sold more copies the computer book or the 15+ poetry books
togather ?
Also the poetry books are about 60 pages long, the computer book is
around 600 pages. Don't you think there is more data in computer book?
(This is a tricky question)
A lot of books about computers & economics are available only in eform
( loving lisp and http://samvak.tripod.com/freebooks.html   for
example), they're are not published in classical way of the word so
they probably don't exist for the congress library. I doubt that
philosopher use this way too. Or use it often.

> In general, if you get information from the internet you need to take
> cognizance of the biases of the medium. People who are active in
> disciplines which are are not so involved with computers and the
> internet expect this bias, and know that (for example) the numbers of
> people in the real world involved in "online gaming" do not outnumber
> those occupied in "farming asia" by 50 to 1, even though google search
> numbers might suggest that if taken literally.
>

Yes  finding good data is very important , even more important than
algorithms you use for mining them. I just don't have time and
interest to make a full study is there more knowledge in cs or
philosophy if you do please let me know when you'll post your results.

> To bring this back to the original subject, this means that it is much
> easier to advance one's competence in Computer Science and programming
> largely by means of the internet than it would be to do so in many
> other disciplines.

Agreed.
From: Giorgos Keramidas
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87iradyikt.fsf@kobe.laptop>
On 21 May 2007 04:28:21 -0700, fireblade <·················@gmail.com> wrote:
> I have at least 15 friends who published at least one poetry
> book and only one who who published computer book . Guess who
> sold more copies the computer book or the 15+ poetry books
> togather ?  Also the poetry books are about 60 pages long, the
> computer book is around 600 pages. Don't you think there is
> more data in computer book?  (This is a tricky question)

Surely, you must be kidding.

The poetry books have infinitely more value than yet another 600+
page book full of screenshots of ancient Netscape Navigator
versions, showing how horribly ugly the output of Java servlets
can be without a bit of artistic touch or 'style' :P
From: John Thingstad
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <op.ts0qwxorpqzri1@pandora.upc.no>
On Mon, 28 May 2007 01:04:18 +0200, Giorgos Keramidas  
<········@ceid.upatras.gr> wrote:

> On 21 May 2007 04:28:21 -0700, fireblade <·················@gmail.com>  
> wrote:
>> I have at least 15 friends who published at least one poetry
>> book and only one who who published computer book . Guess who
>> sold more copies the computer book or the 15+ poetry books
>> togather ?  Also the poetry books are about 60 pages long, the
>> computer book is around 600 pages. Don't you think there is
>> more data in computer book?  (This is a tricky question)
>
> Surely, you must be kidding.
>
> The poetry books have infinitely more value than yet another 600+
> page book full of screenshots of ancient Netscape Navigator
> versions, showing how horribly ugly the output of Java servlets
> can be without a bit of artistic touch or 'style' :P
>

That's in the eye of the beholder. I don't read poetry.

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
From: Alain Picard
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87646dgsf3.fsf@memetrics.com>
"John Thingstad" <··············@chello.no> writes:

> That's in the eye of the beholder. I don't read poetry.

I don't really read poetry either, but I've noticed that its
shelf life is measured in centuries, whereas that of programming
books is measured in months -- years when you're lucky.
From: George Neuner
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <7h6n5312v530bl4ji94jhcf48c8f43520a@4ax.com>
On Mon, 28 May 2007 20:21:20 +1000, Alain Picard
<············@memetrics.com> wrote:

>"John Thingstad" <··············@chello.no> writes:
>
>> That's in the eye of the beholder. I don't read poetry.
>
>I don't really read poetry either, but I've noticed that its
>shelf life is measured in centuries, whereas that of programming
>books is measured in months -- years when you're lucky.

That's because it stays on the shelf ;)  Books that are read become
worn and eventually fall apart.

George
--
for email reply remove "/" from address
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1180435475.859689.52870@o5g2000hsb.googlegroups.com>
On May 28, 1:04 am, Giorgos Keramidas <········@ceid.upatras.gr>
wrote:
> On 21 May 2007 04:28:21 -0700, fireblade <·················@gmail.com> wrote:
>
> > I have at least 15 friends who published at least one poetry
> > book and only one who who published computer book . Guess who
> > sold more copies the computer book or the 15+ poetry books
> > togather ?  Also the poetry books are about 60 pages long, the
> > computer book is around 600 pages. Don't you think there is
> > more data in computer book?  (This is a tricky question)
>
> Surely, you must be kidding.
>
> The poetry books have infinitely more value than yet another 600+
> page book full of screenshots of ancient Netscape Navigator
> versions, showing how horribly ugly the output of Java servlets
> can be without a bit of artistic touch or 'style' :P

What about a picture is worth of thousands words ?
From: Giorgos Keramidas
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87d50mpdke.fsf@kobe.laptop>
On 18 May 2007 07:18:34 -0700, fireblade <·················@gmail.com> wrote:
> Honestly , I don't know. Computers are popular things this days
> and considering that more than 50% of all people that ever
> walked the earth are still a live that might be true.

Intriguing assertion.  What it is based on?
From: Jon Harrop
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <465a2b89$0$8753$ed2619ec@ptn-nntp-reader02.plus.net>
Giorgos Keramidas wrote:
> On 18 May 2007 07:18:34 -0700, fireblade <·················@gmail.com>
> wrote:
>> Honestly , I don't know. Computers are popular things this days
>> and considering that more than 50% of all people that ever
>> walked the earth are still a live that might be true.
> 
> Intriguing assertion.  What it is based on?

  http://www.icr.org/

;-)

-- 
Dr Jon D Harrop, Flying Frog Consultancy
The F#.NET Journal
http://www.ffconsultancy.com/products/fsharp_journal/?usenet
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1180435282.699486.314410@p77g2000hsh.googlegroups.com>
On May 27, 4:05 pm, Giorgos Keramidas <········@ceid.upatras.gr>
wrote:
> On 18 May 2007 07:18:34 -0700, fireblade <·················@gmail.com> wrote:
>
> > Honestly , I don't know. Computers are popular things this days
> > and considering that more than 50% of all people that ever
> > walked the earth are still a live that might be true.
>
> Intriguing assertion.  What it is based on?

Under my wrong assumptions I've read or heard somewhere, I didn't
remember where exactly, and stated false under the new guesstimates
that I make a link  in my previous post , whichever that was.
Keeping up with long threads is hard neh?
From: Pascal Costanza
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <5b2ra7F2r3o4fU2@mid.individual.net>
fireblade wrote:
> On May 16, 9:22 pm, Pascal Costanza <····@p-cos.net> wrote:
>> Wade Humeniuk wrote:
>>> There is not a lot of accumulated knowledge in computer science?
>> Compared to other, older sciences? No.
> 
> Depends how you measure accumulated knowledge, after a quick look at
> amazon books seems that there's more books (though not necessary
> knowledge) than many far older sciences:
[...]

Now, we have to make a careful analysis how much repetition and 
redundancy there is in the books of the various fields to be able to 
determine the _actual_ respective amount of knowledge.

[Admittedly, I cannot prove my claim either.]


Pascal

-- 
My website: http://p-cos.net
Common Lisp Document Repository: http://cdr.eurolisp.org
Closer to MOP & ContextL: http://common-lisp.net/project/closer/
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hy96lw.vhar3wl46mvwN%wrf3@stablecross.com>
Pascal Costanza <··@p-cos.net> wrote:

> fireblade wrote:
> > On May 16, 9:22 pm, Pascal Costanza <····@p-cos.net> wrote:
> >> Wade Humeniuk wrote:
> >>> There is not a lot of accumulated knowledge in computer science?
> >> Compared to other, older sciences? No.
> > 
> > Depends how you measure accumulated knowledge, after a quick look at
> > amazon books seems that there's more books (though not necessary
> > knowledge) than many far older sciences:
> [...]
> 
> Now, we have to make a careful analysis how much repetition and 
> redundancy there is in the books of the various fields to be able to 
> determine the _actual_ respective amount of knowledge.
> 
> [Admittedly, I cannot prove my claim either.]
> 
> 

Knuth might side with you:

I remember that mathematicians were telling me in the 1960s that they
would recognize computer science as a mature discipline when it had
1,000 deep algorithms. I think we've probably reached 500 [as of
10/5/2001]. There are certainly lots of algorithms that I think have to
be considered absolutely beautiful and immortal, in some sense. Two
examples are the Euclid algorithm and a corresponding one that works in
binary notation and that may have been developed independently in China,
almost as early as Euclid's algorithm was invented in Greece. In my
books I am mostly concerned with the algorithms that are classical and
that have been around for a long time. But still, every year we find
brand new ideas that I think are going to remain forever.

"All Questions Answered"
http://www.ams.org/notices/200203/fea-knuth.pdf
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179745140.832928.192210@y18g2000prd.googlegroups.com>
On May 17, 1:06 pm, Pascal Costanza <····@p-cos.net> wrote:
> fireblade wrote:
> > On May 16, 9:22 pm, Pascal Costanza <····@p-cos.net> wrote:
> >> Wade Humeniuk wrote:
> >>> There is not a lot of accumulated knowledge in computer science?
> >> Compared to other, older sciences? No.
>
> > Depends how you measure accumulated knowledge, after a quick look at
> > amazon books seems that there's more books (though not necessary
> > knowledge) than many far older sciences:
>
> [...]
>
> Now, we have to make a careful analysis how much repetition and
> redundancy there is in the books of the various fields to be able to
> determine the _actual_ respective amount of knowledge.
>
> [Admittedly, I cannot prove my claim either.]
>

Nor could I prove that you're wrong  :)
From: Rob Warnock
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <X4SdnVSe6qSfTdbbnZ2dnUVZ_hSdnZ2d@speakeasy.net>
Pascal Costanza  <··@p-cos.net> wrote:
+---------------
| One of the problems I see with computer science courses at universities 
| is that it is typically taught as if it were a branch of mathematics or 
| natural sciences, which it is clearly not.
+---------------

Well, Edsger W. Dijkstra clearly thought it *is*!! From
"How do we tell truths that might hurt?" (EWD498, June 1975):

    Programming is one of the most difficult branches of
    applied mathematics; the poorer mathematicians had better
    remain pure mathematicians.

A few more relevant zingers:

    About the use of language: it is impossible to sharpen a
    pencil with a blunt axe. It is equally vain to try to do it
    with ten blunt axes instead.

and:

    Besides a mathematical inclination, an exceptionally good
    mastery of one's native tongue is the most vital asset of
    a competent programmer.


-Rob

p.s. The full text:

    http://www.cs.utexas.edu/users/EWD/ewd04xx/EWD498.PDF
    http://www.cs.virginia.edu/~evans/cs655/readings/ewd498.html


-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Pascal Costanza
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <5b2rauF2r3o4fU3@mid.individual.net>
Rob Warnock wrote:
> Pascal Costanza  <··@p-cos.net> wrote:
> +---------------
> | One of the problems I see with computer science courses at universities 
> | is that it is typically taught as if it were a branch of mathematics or 
> | natural sciences, which it is clearly not.
> +---------------
> 
> Well, Edsger W. Dijkstra clearly thought it *is*!!

He's wrong. ;)


Pascal

-- 
My website: http://p-cos.net
Common Lisp Document Repository: http://cdr.eurolisp.org
Closer to MOP & ContextL: http://common-lisp.net/project/closer/
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hy968e.9fsb4a1h5tchsN%wrf3@stablecross.com>
Pascal Costanza <··@p-cos.net> wrote:

> Rob Warnock wrote:
> > Pascal Costanza  <··@p-cos.net> wrote:
> > +---------------
> > | One of the problems I see with computer science courses at universities
> > | is that it is typically taught as if it were a branch of mathematics or
> > | natural sciences, which it is clearly not.
> > +---------------
> > 
> > Well, Edsger W. Dijkstra clearly thought it *is*!!
> 
> He's wrong. ;)
> 
> 

Question:What is the connection between mathematics and computer
programming viewed as an art?
Knuth: Art is Kunst. The American movie Artificial Intelligence is
called Kunstlicher Intelligenz in Germany--that is, artificial as well
as artistic. I think of programming with beauty in mind, as being
something elegant, something that you can be proud of for the way it
fits together. Mathematics in the same way has elegance. Both fields,
com- puting and mathematics, are different from other sciences because
they are artificial; they are not in nature. They're totally under our
own control. We make up the axioms, and when we solve a problem, we can
prove that we've solved it. No astronomer will ever know whether his
theories of astronomy are correct. You can't go up to the sun and
measure it. So these are my first thoughts on that connection. But there
is a difference between mathematics and computer programming, and
sometimes I can feel when I'm putting on one hat or the other. Some
parts of me like mathematics, and some parts of me like emacs hacking. I
think they go together okay, but I don't see that they're the same
paradigm.

- Donald Knuth, "All Questions Answered",
http://www.ams.org/notices/200203/fea-knuth.pdf
From: Raffael Cavallaro
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <2007051710380777923-raffaelcavallaro@pasdespamsilvousplaitmaccom>
On 2007-05-17 10:28:32 -0400, ····@stablecross.com (Bob Felts) said:

> Both fields,
> com- puting and mathematics, are different from other sciences because
> they are artificial; they are not in nature. They're totally under our
> own control.

I'd say that the laws of physics and they way they impact hardware 
design are a pretty heavy constraint on algorithm design. I would't put 
computing in the same category as mathematics here. We can posit any 
mathematical system we like. We can only usefully posit computing 
systems that actually function in the real physical world.




>  We make up the axioms, and when we solve a problem, we can
> prove that we've solved it. No astronomer will ever know whether his
> theories of astronomy are correct. You can't go up to the sun and
> measure it.


Measurement can be done at a distance,  (spacecraft, telescopes, etc.) 
Astronomy is a science with falsifiable, measurable claims, just like 
other physical sciences, despite the distances involved.
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hy975h.1jcfkz7lgae84N%wrf3@stablecross.com>
Raffael Cavallaro <················@pas-d'espam-s'il-vous-plait-mac.com>
wrote:

> On 2007-05-17 10:28:32 -0400, ····@stablecross.com (Bob Felts) said:
> 
> > Both fields, computing and mathematics, are different from other
> > sciences because they are artificial; they are not in nature. They're
> > totally under our own control.
> 
> I'd say that the laws of physics and they way they impact hardware 
> design are a pretty heavy constraint on algorithm design.

How so?   Classical computers are just turing machines; they don't care
about the algorithm being run.

> I would't put computing in the same category as mathematics here. We can
> posit any mathematical system we like. We can only usefully posit
> computing systems that actually function in the real physical world.

Why do you stick "useful" in front of "computing systems" but not
"mathematical systems"?  Is your definition of "useful" the same as
someone elses?
 

> >  We make up the axioms, and when we solve a problem, we can
> > prove that we've solved it. No astronomer will ever know whether his
> > theories of astronomy are correct. You can't go up to the sun and
> > measure it.
> 
> 
> Measurement can be done at a distance,  (spacecraft, telescopes, etc.)
> Astronomy is a science with falsifiable, measurable claims, just like
> other physical sciences, despite the distances involved.

Knuth had the right idea but perhaps with the wrong example.  There is a
point where the measurable meets the unmeasurable.  Are we ever going to
be able, for example, to test the claims of string theory, or has that
wandered away from science into philosophy?
From: Kent M Pitman
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <ur6pfmp0r.fsf@nhplace.com>
I've not been reading this full thread, so apologies in advance if I'm
overlooking some context here.

····@stablecross.com (Bob Felts) writes:

> Raffael Cavallaro <················@pas-d'espam-s'il-vous-plait-mac.com>
> wrote:
> 
> > On 2007-05-17 10:28:32 -0400, ····@stablecross.com (Bob Felts) said:
> > 
> > > Both fields, computing and mathematics, are different from other
> > > sciences because they are artificial; they are not in nature. They're
> > > totally under our own control.
> > 
> > I'd say that the laws of physics and they way they impact hardware 
> > design are a pretty heavy constraint on algorithm design.
> 
> How so?   Classical computers are just turing machines; they don't care
> about the algorithm being run.

Hmm.  I agree with some of what you'er saying, Bob, and disagree with
some of what Raffael is saying (at least here--he and I agree on a
number of other things in other threads), but this statement is oddly
worded and I wonder if you meant it in exactly the way it's written.

Clearly the architecture of the computer, at some level, matters.
That is, it matters what instructions are fast and slow.  It matters
which tasks are parallizable and and which are not.  It matters what
various components cost and how many of them you have.  And so on.  So
plainly one Turing machine is not interchangeable with another from
the point of view of algorithmic cost.  In fact, the first lesson of
modern machines was that the Turing design of storing things on linear
tape, while functionally equivalent to random access memory, is not
performance-wise equivalent.  So in spite of how the old movies show
supercomputers like Forbin that take over the world often having banks
and banks of tape, we don't do that any more, and for reasons that are
related to a hardware/algorithm mismatch.

Nevertheless, I think I agree with what I think is your basic point
that some elements of computer science are contrived, moreso than in
the real world.  That is, in the real world, we get gravity, speed of
light, etc. pretty much given and unalterable.  One can write a thesis
on how the world would look without protons, and it's maybe a useful
theoretical excerise, but practically speaking, we're not going to
build it.  By contrast, we can both imagine and build processors with
interesting architectures that turn on their head the question of
what's fast and slow.  Even just the exercise of comparing what is
fast and slow in a byte compiled implementation of Common Lisp (such
as clisp is) and what is fast and slow on a native-instruction
implementation (most other common lisp implementations) shows you how
profoundly a change in the machine's capabilities [in that case, a
virtual machine, but the issues are in many ways similar] can be.  The
various Lisp Machine technologies with hardware assists for fast
pointer chasing, tag testing, etc. were interesting.

The reason I didn't become a computer science major in college is that
I just couldn't bear to waste time on study of hardware.  It just
didn't interest me and I ended up refusing to go to the classes
because I had other things I wanted to do instead.  I asked one time
why I had to take so much hardware, and it was explained to me that CS
grew out of EE (at MIT) and that they really didn't know how to grade
CS, because they were not sure what was "true".  So they needed to
measure something concrete, just to make sure we knew something, and
EE was the obvious choice.  They figured if we knew something "real"
(EE), plus this new thing (CS) that had no real foundations--only
mutable axioms--we'd be ok.  I wished it were not EE, but this was the
"hard truth" in which the teachers who were evolving CS had grown out
of, so this is what they tested. (At other universities, the story
seemed to be the same, but with Math replaced in there.  Or sometimes
with Physics, or Mech-E, or whatever.)  This person was not speaking
officially, and I don't recall who it was, but is seemed the best
account I could find of what the truth was.

In Math, you actually can find ways to violate normal axioms and still
find places in the Universe where there the new systems you derive
will be true.  But in CS, it's commonplace to violate axioms, not
because computers are free of physics, but they are far enough removed
at an abstraction later, that the axioms are not really fixed... there
is plenty of maleable stuff between Physics and my choice of a bubble
sort vs a quicksort, such that physics is a poor explanation of why my
program runs slowly, even though it has a vague influence.  [Indeed,
the art of magic (card tricks and whatnot) exploits this same thing.
People want to believe certain things are dictated by physics, but the
person who successfully does magic is basically aware that there are
many manipulable layers between what physics requires and what you
see, and that they can be suitably shuffled to not violate physics,
yet give the illusion to anyone who thinks there is a direct relation
that you have done something you shouldn't have been able to.  Such is
the import of Clarke's Third.]

Computer Science is informed by Science, but distantly enough that
there is plenty of room for a person to spend a lifetime oblivious to
the science of things, still doing useful stuff.  Indeed, the science
may hold him back.  This is the deceptive myth about big-O notation, btw.
It's certainly true that O(0.000001*n^2) is bigger than O(10000000*n) in
some theoretical limit, but it's easy to construct universes in which the
numbers never get big enough for one to overtake the other.  Computer
Science exploits this from the very start, by teaching you on day one that
addition is a constant-time operation, which is ALREADY a violation of
the big-O religion they teach you later.  This took me years to sort out
and reconcile.  But it's all about layers.

> > I would't put computing in the same category as mathematics here. We can
> > posit any mathematical system we like. We can only usefully posit
> > computing systems that actually function in the real physical world.
>
> Why do you stick "useful" in front of "computing systems" but not
> "mathematical systems"?  Is your definition of "useful" the same as
> someone elses?

Bob, I think the mistake you're making is that you assume you're right
(and I think you are) and you're assuming that means there is a flaw
in what Raffael has said (and I think there is) but I don't think the
word "useful" is where it's hiding.

I think the problem is in thinking that computing systems are
explained by physics.  Because "explained by" is not usefully
transitive.  Yes, we can explain algorithms in terms of language,
language in terms of compilers and assembly code, assembly in terms of
microcode or hardware, hardware chips in terms of lower-level
component units like gates, flipflops, transistors, etc.  We can
explain those components in terms of signals, signals in terms of wave
froms, wave forms in terms of physics.  But saying that a program runs
slowly because an electrical charge was misplaced is both true and
useless... mostly because the cascade effect of error computation and
the computational overhead of modeling a system that complex in that
way is overwhelming.  So we learn from computational mathematics that
physics is not a computationally effective model of what's going on in
your program.  Geez, if you violated ONE level of abstraction and said
that you should think of something as (car x) instead of (foo x) where
foo was defined by (defun foo (x) (car x)), you'd ALREADY be in
trouble for having hindered the ability to reimplement things.  You
shouldn't be relying on that much peeling back.

Mathematics gives us tools for abstracting information that allows us
to know important things that transcend the layers, like "information
is persistent" or "storage is randomly accessible" or "this data
structure is linked".  And sometimes those terms are useful as
descriptions.  But to say that these form laws of behavior is what the
problem is.  Different abstractions can be substituted without
violating physics, and "abstraction theory" (if there is such a
field), not "physics", is what tells us what's doable and not.

Perhaps this is the dividing line between engineering and science, and
perhaps all I'm saying is that computer science is an engineering
discipline at heart, not a science.  That doesn't mean it's not bound
by the laws of science, but rather that it seeks to overcome the
apparent restrictions and exploit the powers... in the magical ways
Clarke suggests.  Science's goal should not be to tell people what
they can't do, nor that they did it the wrong way if they ignored
Science and got something done; rather, it should be a tool that
explains what is done (or else its predictive nature is lost) and
enables people who are otherwise at a deadlock (because it offers
structural insight that might otherwise not be apparent).  Computer
Science should be offering to help people solve impossible problems,
not to tell people who are solving possible problems that they have
done so incompetently.  The goal in most real-world situations (other
than university life, etc.) is not science.  Science is generally just
a tool for breaking intellectual logjams.  If people never got stuck,
they would not need science except for entertainment.  Or so it seems
to me at the moment.. I'm trying to be a bit deliberatively provocative
here. ;)

> > >  We make up the axioms, and when we solve a problem, we can
> > > prove that we've solved it. No astronomer will ever know whether his
> > > theories of astronomy are correct. You can't go up to the sun and
> > > measure it.
> > 
> > 
> > Measurement can be done at a distance,  (spacecraft, telescopes, etc.)
> > Astronomy is a science with falsifiable, measurable claims, just like
> > other physical sciences, despite the distances involved.

I certainly agree with this.  And we can likewise measure the effects of
physics on abstractions.  If we didn't know what was in machines, we might
ultimately figure out that they had certain properties by doing experiments
on our programs.  But that isn't the best way, given that we do know what's
in them.

> Knuth had the right idea but perhaps with the wrong example.  There is a
> point where the measurable meets the unmeasurable.  Are we ever going to
> be able, for example, to test the claims of string theory, or has that
> wandered away from science into philosophy?

People are too easily held back by what others say they can't do.  And
there are too many unexplored possibilities.  It's one thing to look
at a far away star and see what you learn.  It's another to say
"because we looked at a far away star, we conclude that we must not
grow corn."  That's just too much of a leap with too much error risk.
It can give us insight, but it ought not be allowed to control us.

Here I'll invoke Clarke's First, and for good measure, his Second, and 
call it a day, having used the full set.
From: Don Geddis
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87veerkzhf.fsf@geddis.org>
Kent M Pitman <······@nhplace.com> wrote on 17 May 2007 11:4:
> So in spite of how the old movies show supercomputers like Forbin that take
> over the world often having banks and banks of tape, we don't do that any
> more

Oh, man.  I loved that movie/book.

        "In time, you will come to regard me not only with respect and awe,
         but with love."

_______________________________________________________________________________
Don Geddis                  http://don.geddis.org/               ···@geddis.org
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hy9egf.y483ma1redq4gN%wrf3@stablecross.com>
Kent M Pitman <······@nhplace.com> wrote:

> I've not been reading this full thread, so apologies in advance if I'm
> overlooking some context here.
> 
> ····@stablecross.com (Bob Felts) writes:
> 
> > Raffael Cavallaro <················@pas-d'espam-s'il-vous-plait-mac.com>
> > wrote:
> > 
> > > On 2007-05-17 10:28:32 -0400, ····@stablecross.com (Bob Felts) said:
> > > 
> > > > Both fields, computing and mathematics, are different from other
> > > > sciences because they are artificial; they are not in nature. They're
> > > > totally under our own control.
> > > 
> > > I'd say that the laws of physics and they way they impact hardware
> > > design are a pretty heavy constraint on algorithm design.
> > 
> > How so?   Classical computers are just turing machines; they don't care
> > about the algorithm being run.
> 
> Hmm.  I agree with some of what you'er saying, Bob, and disagree with some
> of what Raffael is saying (at least here--he and I agree on a number of
> other things in other threads), but this statement is oddly worded and I
> wonder if you meant it in exactly the way it's written.
> 
> Clearly the architecture of the computer, at some level, matters.

It doesn't matter to the computer and it doesn't matter to the
algorithm.  It matters to you, but that's not the only measure of
things.  There are a lot of mathematicians whose work may not have any
real-world implications, but that doesn't stop them from exploring the
unknown.

[...]

> 
> Nevertheless, I think I agree with what I think is your basic point
> that some elements of computer science are contrived, moreso than in
> the real world.  That is, in the real world, we get gravity, speed of
> light, etc. pretty much given and unalterable.  One can write a thesis
> on how the world would look without protons, and it's maybe a useful
> theoretical excerise, but practically speaking, we're not going to
> build it.  By contrast, we can both imagine and build processors with
> interesting architectures that turn on their head the question of
> what's fast and slow.  Even just the exercise of comparing what is
> fast and slow in a byte compiled implementation of Common Lisp (such
> as clisp is) and what is fast and slow on a native-instruction
> implementation (most other common lisp implementations) shows you how
> profoundly a change in the machine's capabilities [in that case, a
> virtual machine, but the issues are in many ways similar] can be.  The
> various Lisp Machine technologies with hardware assists for fast
> pointer chasing, tag testing, etc. were interesting.
> 

Some of us are mechanics, some of us are theoreticians, and some of us
are mongrels.  ;-)

> The reason I didn't become a computer science major in college is that
> I just couldn't bear to waste time on study of hardware.  It just
> didn't interest me and I ended up refusing to go to the classes
> because I had other things I wanted to do instead.  I asked one time
> why I had to take so much hardware, and it was explained to me that CS
> grew out of EE (at MIT) and that they really didn't know how to grade
> CS, because they were not sure what was "true".  So they needed to
> measure something concrete, just to make sure we knew something, and
> EE was the obvious choice.  They figured if we knew something "real"
> (EE), plus this new thing (CS) that had no real foundations--only
> mutable axioms--we'd be ok.  I wished it were not EE, but this was the
> "hard truth" in which the teachers who were evolving CS had grown out
> of, so this is what they tested. (At other universities, the story
> seemed to be the same, but with Math replaced in there.  Or sometimes
> with Physics, or Mech-E, or whatever.)  This person was not speaking
> officially, and I don't recall who it was, but is seemed the best
> account I could find of what the truth was.
> 

When I started my college career, the University of Virginia didn't even
have a CS degree.  I went with Applied Math, instead.  Don't remember
much of it (math) at all, but much of the CS courses have remained
useful.  Fortunately, for my sanity, it didn't have the EE component
yours did.

[...]

> 
> > > I would't put computing in the same category as mathematics here. We
> > > can posit any mathematical system we like. We can only usefully posit
> > > computing systems that actually function in the real physical world.
> >
> > Why do you stick "useful" in front of "computing systems" but not
> > "mathematical systems"?  Is your definition of "useful" the same as
> > someone elses?
> 
> Bob, I think the mistake you're making is that you assume you're right
> (and I think you are) and you're assuming that means there is a flaw
> in what Raffael has said (and I think there is) but I don't think the
> word "useful" is where it's hiding.

We all think we're right.  The trick is recognizing when we're not.  ;-)

> 
> I think the problem is in thinking that computing systems are
> explained by physics.  Because "explained by" is not usefully
> transitive.  Yes, we can explain algorithms in terms of language,
> language in terms of compilers and assembly code, assembly in terms of
> microcode or hardware, hardware chips in terms of lower-level
> component units like gates, flipflops, transistors, etc.  We can
> explain those components in terms of signals, signals in terms of wave
> froms, wave forms in terms of physics.  But saying that a program runs
> slowly because an electrical charge was misplaced is both true and
> useless... mostly because the cascade effect of error computation and
> the computational overhead of modeling a system that complex in that
> way is overwhelming.  So we learn from computational mathematics that
> physics is not a computationally effective model of what's going on in
> your program.

Agreed.  Computational models are explained by axioms.  We're just used
to picking axioms that somehow map to the physical world because, at
some point, we really do want to compute.

[...]

> 
> Perhaps this is the dividing line between engineering and science, and
> perhaps all I'm saying is that computer science is an engineering
> discipline at heart, not a science.

And that's where the point of contention lies.  As for me, I've seen to
much "engineering" without the science (and I think I really should say
"math").  It's one reason why some software is so horrible.

> That doesn't mean it's not bound by the laws of science, but rather that
> it seeks to overcome the apparent restrictions and exploit the powers...
> in the magical ways Clarke suggests.  Science's goal should not be to tell
> people what they can't do, nor that they did it the wrong way if they
> ignored Science and got something done; rather, it should be a tool that
> explains what is done (or else its predictive nature is lost) and enables
> people who are otherwise at a deadlock (because it offers structural
> insight that might otherwise not be apparent).  Computer Science should be
> offering to help people solve impossible problems, not to tell people who
> are solving possible problems that they have done so incompetently.

You have to have some way of dealing with the incompetents (of which
there are many).  One would hope that this way would have some
rationality behind it.

>  The goal in most real-world situations (other than university life, etc.)
> is not science.

But, again, you're focusing on the engineering aspect.  That's not all
there is to comp sci.

> Science is generally just a tool for breaking intellectual logjams.  If
> people never got stuck, they would not need science except for
> entertainment.  Or so it seems to me at the moment.. I'm trying to be a
> bit deliberatively provocative here. ;)
> 

What about math, in which part of the fun is creating the intellectual
logjams in the first place, just to see if they can be solved?


[...]
From: Rob Warnock
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <7pWdnQ17k8nsudDbnZ2dnUVZ_riknZ2d@speakeasy.net>
Kent M Pitman  <······@nhplace.com> wrote:
+---------------
| Mathematics gives us tools for abstracting information that allows us
| to know important things that transcend the layers, like "information
| is persistent" or "storage is randomly accessible" or "this data
| structure is linked".  And sometimes those terms are useful as
| descriptions.  But to say that these form laws of behavior is what the
| problem is.  Different abstractions can be substituted without
| violating physics, and "abstraction theory" (if there is such a
| field), not "physics", is what tells us what's doable and not.
+---------------

This is in fact what Dijkstra's "A Discipline of Programming"
or David Gries's "The Science of Programming" is all about:
a theory of abstraction which allows you to prove useful lemmas
about *each* elementary programming construct, about each allowed
*composition* of elementary programming constructs, and thus
grow a program and its proof together -- which *is* possible
[and those books show how] -- rather than trying to take an
already-completed ball of mud and prove something about it --
which we know, thanks to Turing, is impossible in general
["The Halting Problem"].

For any serious professional programmer who has not read these,
I strongly recommend doing so. Like learning Lisp itself, it will
at least expose you to a *very* different view of constructing
software, one which will illuminate & inform, *even if* you do
not choose to follow the suggested methodology rigorously in your
own coding afterwards [as I confess I seldom do]. Those not familiar
with Dijkstra's other works [and his sometimes terse or even dense
style] may find the Gries book more approachable; conversely, for
those who wish to jump directly into the deep end, the Dijkstra book
begins directly: Chapter 1, "Executional Abstraction".

Their formalism is based heavily on the notion of "predicate
transformers", computational operations which transform a
post-condition on the total system state *after* the operation
into a pre-condition on the total system state *before* the
operation, and in particular, the "weakest pre-condition" induced
by an operation onto a given post-condition. A simple example:

Suppose the predicate R(x) = x > 3  [In CL, (defun r (x) (> x 3))].
Given the operation S(x) = x := x - 1  [in CL, (decf x)], what is
the *weakest* [most liberal] pre-condition P(x) such that if P(x)
is true *before* an instance of S, then R(x) will be true *after*
the instance of S?  That is:

    (assert (p x))	; What is the weakest P such that...
    (decf x)
    (assert (r x))	; ...*this* ASSERT never fires?

Of course, the answer is simply P(x) = x > 4  [or (defun p (x) (> x 4)).

Thus the common computational operation of decrementing a number
has been reinterpreted as a "predicate transformer" that converts
one predicate into another, sort of a macro, if you will, that rewrites
any post-condition into its corresponding weakest pre-condition.

    wp(S,R) ==> P

or in our example:

    wp((decf x) (> x y)) ==> (> x (1+ y))

If that's as far as it went, it would be useless. But they go on
to develop a "library" of such transformers, an "algebra" of them,
that allows you to start at the end of your program [or the section
of program you're working on] with the desired outcome [the post-
condition] and back your way into whatever starting system state
you happened to be handed initially [the pre-condition]. Included
of course are the classical "structured programming" constructs
of sequencing (concatenation), alternation (IFs & CASEs), and
looping (WHILE). Along the way one learns a completely new way
to look at guaranteeing loop termination, and a correspondingly
new way of choosing the definitions (and sematics) of your loop
variables.

+---------------
| Perhaps this is the dividing line between engineering and science,
| and perhaps all I'm saying is that computer science is an engineering
| discipline at heart, not a science.  That doesn't mean it's not bound
| by the laws of science, but rather that it seeks to overcome the
| apparent restrictions and exploit the powers... in the magical ways
| Clarke suggests.  Science's goal should not be to tell people what
| they can't do, nor that they did it the wrong way if they ignored
| Science and got something done; rather, it should be a tool that
| explains what is done (or else its predictive nature is lost) and
| enables people who are otherwise at a deadlock (because it offers
| structural insight that might otherwise not be apparent).
+---------------

I believe that the above-referenced works do this (or at least try).

+---------------
| Computer Science should be offering to help people solve
| impossible problems...
+---------------

Here, however, I must respectfully disagree. Computer Science
should be providing tools to allow people to know whether their
problems are *truly* impossible, in which case they can then stop
wasting their time on them, or merely difficult [albeit possibly
very, *very* difficult!], in which case Computer Science should,
as you say, offer techniques for "breaking intellectual logjams".

Dijkstra said [in his 1972 Turing Award acceptance lecture
"The Humble Programmer"] that:

    A study of program structure had revealed that programs -- even
    alternative programs for the same task and with the same mathematical
    content- can differ tremendously in their intellectual manageability.
    A number of rules have been discovered, violation of which will
    either seriously impair or totally destroy the intellectual
    manageability of the program. These rules are of two kinds. Those
    of the first kind are easily imposed mechanically... For those of the
    second kind I at least ... see no way of imposing them mechanically,
    as it seems to need some sort of automatic theorem prover for which
    I have no existence proof. Therefore, for the time being and perhaps
    forever, the rules of the second kind present themselves as elements
    of discipline required from the programmer. Some of the rules I have
    in mind are so clear that they can be taught and that there never
    needs to be an argument as to whether a given program violates them
    or not. Examples are the requirements that no loop should be written
    down without providing a proof for termination nor without stating
    the relation whose invariance will not be destroyed by the execution
    of the repeatable statement.

    I now suggest that we confine ourselves to the design and
    implementation of intellectually manageable programs. If someone
    fears that this restriction is so severe that we cannot live with it,
    I can reassure him: the class of intellectually manageable programs
    is still sufficiently rich to contain many very realistic programs
    for any problem capable of algorithmic solution. We must not forget
    that it is not our business to make programs, it is our business to
    design classes of computations that will display a desired behaviour.

and:

    Those who want really reliable software will discover that they
    must find means of avoiding the majority of bugs to start with,
    and as a result the programming process will become cheaper. If
    you want more effective programmers, you will discover that they
    should not waste their time debugging, they should not introduce
    the bugs to start with. In other words: both goals point to the
    same change.

It is at this these goals that the two books I mentioned at the
beginning aim.


-Rob

p.s. By the way, to bring this back a little closer to home,
it was in that same lecture that Dijkstra said:

    The third project I would not like to leave unmentioned is LISP,
    a fascinating enterprise of a completely different nature. With
    a few very basic principles at its foundation, it has shown a
    remarkable stability. Besides that, LISP has been the carrier
    for a considerable number of in a sense our most sophisticated
    computer applications. LISP has jokingly been described as
    "the most intelligent way to misuse a computer". I think that
    description a great compliment because it transmits the full
    flavour of liberation: it has assisted a number of our most
    gifted fellow humans in thinking previously impossible thoughts.

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Alan Crowe
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <86y7jmup98.fsf@cawtech.freeserve.co.uk>
····@rpw3.org (Rob Warnock) writes:

> This is in fact what Dijkstra's "A Discipline of Programming"
> or David Gries's "The Science of Programming" is all about:
> a theory of abstraction which allows you to prove useful lemmas
> about *each* elementary programming construct, about each allowed
> *composition* of elementary programming constructs, and thus
> grow a program and its proof together -- which *is* possible
> [and those books show how] -- rather than trying to take an
> already-completed ball of mud and prove something about it --
> which we know, thanks to Turing, is impossible in general
> ["The Halting Problem"].
> 
> For any serious professional programmer who has not read these,
> I strongly recommend doing so. Like learning Lisp itself, it will
> at least expose you to a *very* different view of constructing
> software, one which will illuminate & inform, *even if* you do
> not choose to follow the suggested methodology rigorously in your
> own coding afterwards [as I confess I seldom do]. Those not familiar
> with Dijkstra's other works [and his sometimes terse or even dense
> style] may find the Gries book more approachable; conversely, for
> those who wish to jump directly into the deep end, the Dijkstra book
> begins directly: Chapter 1, "Executional Abstraction".
> 

I hope you are right because I have just bought myself a
copy of A Discipline of Programming. I think I know what I a
getting myself into because I borrowed the book from a
friend a few years ago, decided it was important and
regretting not being able to study it properly at the time.

I thought I would cope with the formal logic side of it
easily since I had become fluent in Boolean Algebra while
doing hardware design. However the formal logic in the book
is written largely using implication and I found that not
being fluent in my manipulations of implications was a drag
on reading the book. I intend to practise as necessary,
viewing this in the same light as learning multiplication
tables.

On point I will be watching out for in my second attempt at
reading the book is this:

It feels natural to say that this code is wrong

         (defun my-reverse (list)
           (if (endp list)
               nil
               (append (my-reverse (rest list))
                       (list (first list)))))

It is not enough that it gets the right answer, its
extravagence disqualifies it. Dijkstra separates the concern
about correctness from the concern about not using quadratic
algorithms where linear ones are available.

Are the gains from separating these two concerns sufficient
to repay the costs when the time comes to put them back
together again?

Alan Crowe
Edinburgh
Scotland
From: William D Clinger
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179532823.756285.207980@u30g2000hsc.googlegroups.com>
Alan Crowe wrote:
> ....Dijkstra separates the concern
> about correctness from the concern about not using quadratic
> algorithms where linear ones are available.
>
> Are the gains from separating these two concerns sufficient
> to repay the costs when the time comes to put them back
> together again?

Yes.  The two concerns are independent in the sense
that every element of the Cartesian product

    {correct, incorrect} x {efficient, inefficient}

is nonempty.  The simplicity won by considering
independent concepts separately is a general
phenomenon, by no means unique to computer science.

As it turns out, the technologies used to
define and to establish correctness have little
overlap with the technologies used to analyze
efficiency.  Furthermore, what counts as extravagant
depends upon what kind of efficiency is possible;
the definition of what efficiency is possible itself
depends upon the notion of correctness, because
it is defined with respect to all possible correct
implementations.  Hence correctness must come first.
In *that* sense, the two concerns are *not*
independent.

Educated programmers generally understand the
paragraphs above.  Their education may come from
the school of hard knocks, but we can't really
expect people to reinvent all of the wheels that
have been invented.  An efficient education takes
advantage of prior knowledge.  The best university
programs do a good job of organizing and teaching
the more important bits of prior knowledge.  Some
people have such a gift for organizing and teaching
themselves that they acquire this prior knowledge
from books, the Internet, and conversation without
any formal schooling, but that ability is not
commonplace and its systematic exercise is even
rarer.

Will
From: Shrubya
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <2007051901224297157-Shrubya@texasgov>
On 2007-05-18 20:00:23 -0400, William D Clinger <········@yahoo.com> said:

> Some
> people have such a gift for organizing and teaching
> themselves that they acquire this prior knowledge
> from books, the Internet, and conversation without
> any formal schooling, but that ability is not
> commonplace and its systematic exercise is even
> rarer.

I enjoyed yer first answer more - it was conciserer.
From: Rob Warnock
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <jq-dnXYkA7xmW9PbnZ2dnUVZ_jadnZ2d@speakeasy.net>
Alan Crowe <····@cawtech.freeserve.co.uk> wrote:
+---------------
| ····@rpw3.org (Rob Warnock) writes:
| > This is in fact what Dijkstra's "A Discipline of Programming"
| > or David Gries's "The Science of Programming" is all about:
| > a theory of abstraction...
| > For any serious professional programmer who has not read these,
| > I strongly recommend doing so. ...
| 
| I hope you are right because I have just bought myself a
| copy of A Discipline of Programming.
+---------------

Congratulations! I wasn't sure it was still in print.

+---------------
| [One] point I will be watching out for in my second attempt at
| reading the book is this:
| 
| It feels natural to say that this code is wrong
| 
|          (defun my-reverse (list)
|            (if (endp list)
|                nil
|                (append (my-reverse (rest list))
|                        (list (first list)))))
| 
| It is not enough that it gets the right answer, its
| extravagence disqualifies it. Dijkstra separates the concern
| about correctness from the concern about not using quadratic
| algorithms where linear ones are available.
| 
| Are the gains from separating these two concerns sufficient to
| repay the costs when the time comes to put them back together again?
+---------------

I *think* so. There's an old saying that "I can give you answers
as fast as you like, as long it you don't care if they're correct."
That's seldom what one really wants.

Rather, the usual advice is "First get it right, then make it fast".
Put in the context of the Dijkstra methodology, once you have a
correct solution *together* with it's embedded/intertwined proof,
then it's much easier to improve performance without breaking things
by making a series of proof-preserving transformations which preserve
the proof around the portion of code being transformed. Obviously,
some or even all of the internal proof may have to change with the
changed section of code, but the pre- & post-conditions *around*
the changes should survive.

Notice that I have not said how large a section of code is
appropriate for each such proof-preserving performance-enhancing
transformation. Unfortunately, that's *very* dependent on how
extensive the transformation needs to be to achieve the desired
performance improvement. Obviously, the larger the scope of each
"local" change, the harder it may be to prove that the change
preserves the important assertions around the periphery of the
changed portion.

The good news, such as it is, is that the Dijkstra proof methodology
is one of the few I've seen [though I'm certainly no expert in
program-proving methodologies!] which handles imperative constructs
[specifically, assignment] almost as conveniently as purely functional
constructs.


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Larry Clapp
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <slrnf4trg7.1f0.larry@theclapp.ddts.net>
On 2007-05-19, Rob Warnock <····@rpw3.org> wrote:
> Rather, the usual advice is "First get it right, then make it fast".
> Put in the context of the Dijkstra methodology, once you have a
> correct solution *together* with it's 

("its")

> embedded/intertwined proof, then it's much easier to improve
> performance without breaking things by making a series of
> proof-preserving transformations which preserve the proof around the
> portion of code being transformed.  Obviously, some or even all of
> the internal proof may have to change with the changed section of
> code, but the pre- & post-conditions *around* the changes should
> survive.

This sounds very much like the philosophy behind Test Driven
Development.  You build an interrelated framework of code and tests,
and when you want to change a specific part of the code, all your
tests guarantee that you don't break any other part of the code in the
process.

-- L
From: John Thingstad
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <op.tskq84iupqzri1@pandora.upc.no>
On Sat, 19 May 2007 14:31:03 +0200, Larry Clapp <·····@theclapp.org> wrote:

>
> This sounds very much like the philosophy behind Test Driven
> Development.  You build an interrelated framework of code and tests,
> and when you want to change a specific part of the code, all your
> tests guarantee that you don't break any other part of the code in the
> process.
>
> -- L
>

For many practical applications it serves the same purpose.
But a proof implies that given the precondition the specified
operations make the postcondition a tautology. (always true)
So you transform the precondition into the postcondition, so to speak.
This is quite labor intensive and can to some extent be automated.
(Isabelle, ACL2, etc)
Test cases are singular data-points and are not guarantied in general to
cover the entire state space. So proof construction is considered more  
rigid.
(It is still only as good as the assumptions in your pre and post  
conditions of cource.)

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
From: Rob Warnock
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <C6udnQI_m6bJR9LbnZ2dnUVZ_umlnZ2d@speakeasy.net>
John Thingstad <··············@chello.no> wrote:
+---------------
| Larry Clapp <·····@theclapp.org> wrote:
| > This sounds very much like the philosophy behind Test Driven
| > Development.  ...
|
| For many practical applications it serves the same purpose.
| But a proof implies that given the precondition the specified
| operations make the postcondition a tautology. (always true)
| So you transform the precondition into the postcondition, so to speak.
| This is quite labor intensive and can to some extent be automated.
| (Isabelle, ACL2, etc)
+---------------

Yes, but in general, transforming the precondition into the
postcondition runs right into the Halting Problem!!  Whereas the
novel aspect of the Dijkstra/Gries methodology [to me, at least,
when I first read them] is that the identification for each imperative
construct of its corresponding "predicate transformer" allows one
to work in the *opposite* direction, more-or-less mechanically
transforming the postcondition back across the imperative step
into the precondition -- writing the code *backwards* from the
end -- in a much more deterministic fashion.

Of course, modulo the one difficulty that you [Thingstad] helpfully
reminded me of in your parallel reply, that of finding an appropriate
loop invariant to allow one to "back up" across a loop. That sometimes
does take a bit of head-scratching, and might be an area where some
automated assistance could help, I dunno.

+---------------
| Test cases are singular data-points and are not guarantied in general
| to cover the entire state space. So proof construction is considered
| more rigid. (It is still only as good as the assumptions in your
| pre and post conditions of cource.)
+---------------

I concur on both points.


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: John Thingstad
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <op.tsl76wzfpqzri1@pandora.upc.no>
On Sun, 20 May 2007 07:19:16 +0200, Rob Warnock <····@rpw3.org> wrote:

>
> Yes, but in general, transforming the precondition into the
> postcondition runs right into the Halting Problem!!  Whereas the
> novel aspect of the Dijkstra/Gries methodology [to me, at least,
> when I first read them] is that the identification for each imperative
> construct of its corresponding "predicate transformer" allows one
> to work in the *opposite* direction, more-or-less mechanically
> transforming the postcondition back across the imperative step
> into the precondition -- writing the code *backwards* from the
> end -- in a much more deterministic fashion.
>

That's true. The postcondition takes the place of the theorem in
mathematics and your job is to prove that it follows from the  
preconditions.
Like in mathematical proof construction a bit of forward reasoning is  
often required
to see what the postcondition should be. Then you clean up and write the  
formal proof.
I used to view it is dissolving the problem.
Each conclusion gets split into several premiss's. Then mathematical logic
is applied to each and the problem perhaps split again until you reach a  
tautology.
(Sometimes using the premise.)
Since the system is carefully designined so each back-step is reductive  
you will
eventually diverge and reach a conclusion.

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
From: Charlton Wilbur
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87k5v4pl0j.fsf@mithril.chromatico.net>
>>>>> "LC" == Larry Clapp <·····@theclapp.org> writes:

    >> Put in the context of the Dijkstra methodology, once
    >> you have a correct solution *together* with [its]
    >> embedded/intertwined proof, then it's much easier to improve
    >> performance without breaking things by making a series of
    >> proof-preserving transformations which preserve the proof
    >> around the portion of code being transformed.  

    LC> This sounds very much like the philosophy behind Test Driven
    LC> Development.  You build an interrelated framework of code and
    LC> tests, and when you want to change a specific part of the
    LC> code, all your tests guarantee that you don't break any other
    LC> part of the code in the process.

They are, in fact, conceptually the same thing; it's just that the
test-driven development proof is much weaker, as it's an empirical
proof.

Charlton




-- 
Charlton Wilbur
·······@chromatico.net
From: John Thingstad
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <op.tskn1sjhpqzri1@pandora.upc.no>
On Sat, 19 May 2007 11:44:27 +0200, Rob Warnock <····@rpw3.org> wrote:

>
> The good news, such as it is, is that the Dijkstra proof methodology
> is one of the few I've seen [though I'm certainly no expert in
> program-proving methodologies!] which handles imperative constructs
> [specifically, assignment] almost as conveniently as purely functional
> constructs.
>

The bad new is that finding loop invariants is fairly difficult with
the imperative constructs (Hoare logic)
You might bet better off specifying the system using Generator Induction
logic and then, if necessary, transforming it to a imperative design.

At university of Oslo I had a cource in Verifiable Programming.
The book is still available from amazon. (last print 1992)
http://www.amazon.ca/Verifiable-Programming-Ole-Johan-Dahl/dp/0139510621
if you are interested.

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
From: Rob Warnock
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <Sc-dnaPar86QSdLbnZ2dnUVZ_oOknZ2d@speakeasy.net>
John Thingstad <··············@chello.no> wrote:
+---------------
| Rob Warnock <····@rpw3.org> wrote:
| > The good news, such as it is, is that the Dijkstra proof methodology
| > is one of the few I've seen ... which handles imperative constructs
| > ... almost as conveniently as purely functional constructs.
| 
| The bad new is that finding loop invariants is fairly difficult with
| the imperative constructs (Hoare logic)
+---------------

Quite true, in the general case.[1]  Fortunately, almost all the loops
one tends to write in "normal" code have a small set of loop-invariant
patterns that work well. ["Normal" loops being those more-or-less-simple
traversals or convergences where mostly all you have to worry about
are getting the boundary conditions right (avoiding "fencepost" errors),
where writing the loop invariant is a matters of seconds or a few
minutes at most. "Hairy" loops, then, would be those occasional monsters
where finding a suitable loop invariant is a matter of hours or days
(or forever!).]

+---------------
| You might bet better off specifying the system using Generator Induction
| logic and then, if necessary, transforming it to a imperative design.
+---------------

Haven't run across Generator Induction Logic yet. I'll look it up,
thanks!


-Rob

[1] I am reminded by this of the case of Shannon's Coding Theorem,
    which *proves* that for any channel, no matter how noisy, there
    *does* exist a block code which allows you to transmit data
    as close to the channel capacity[2] as you like with as low
    an error rate as you like, *BUT*... not being a "constructive"
    proof, gives you absolutely *no* hints as to how to find said code.

    Integral calculus sometimes feels like this, too.

[2] Note that the "channel capacity" is a function of *both* the
    bandwidth (or bit rate) and the error rate, and decreases
    with the error rate, thus this is not as impossible a promise
    as it may sound initially.

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Pascal Bourguignon
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87r6pbjlm1.fsf@thalassa.lan.informatimago.com>
····@rpw3.org (Rob Warnock) writes:

> John Thingstad <··············@chello.no> wrote:
> +---------------
> | Rob Warnock <····@rpw3.org> wrote:
> | > The good news, such as it is, is that the Dijkstra proof methodology
> | > is one of the few I've seen ... which handles imperative constructs
> | > ... almost as conveniently as purely functional constructs.
> | 
> | The bad new is that finding loop invariants is fairly difficult with
> | the imperative constructs (Hoare logic)
> +---------------
>
> Quite true, in the general case.[1]  Fortunately, almost all the loops
> one tends to write in "normal" code have a small set of loop-invariant
> patterns that work well. ["Normal" loops being those more-or-less-simple
> traversals or convergences where mostly all you have to worry about
> are getting the boundary conditions right (avoiding "fencepost" errors),
> where writing the loop invariant is a matters of seconds or a few
> minutes at most. "Hairy" loops, then, would be those occasional monsters
> where finding a suitable loop invariant is a matter of hours or days
> (or forever!).]

I don't understand. You mean some loops are written without their
invariant explicited first?   That's not how I was taught (in school)
to write loops...


-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

NOTE: The most fundamental particles in this product are held
together by a "gluing" force about which little is currently known
and whose adhesive power can therefore not be permanently
guaranteed.
From: John Thingstad
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <op.tsnbd5hspqzri1@pandora.upc.no>
On Sun, 20 May 2007 22:17:26 +0200, Pascal Bourguignon  
<···@informatimago.com> wrote:

>
> I don't understand. You mean some loops are written without their
> invariant explicited first?   That's not how I was taught (in school)
> to write loops...
>
>

Perhaps it is best illustrated with a example:

Here is a formal spesification of GCD using Eucids algorithm.
Note that the stuff in brackets {..} is part of the spesification and is  
not
executed, it is only used in the proof.


const m, n : Int; {m >= 0 and n > 0}
var x, y : Int = m, n;
loop {const q : Int = x/y; }
      const r : Int = x mod y;
      {x=q*y+r and 0<=r<y and gcd(x,y) = gcd(m,n)}
while r /= 0;
      x, y = y, r
repeat
{y = gcd(m,n)}

precondition: m >= 0 and n > 0
postcondition: y = gcd(m,n)

loop invariant
precondition: const q : Int = x/y;
postcondition: x=q*y+r and 0<=r<y and gcd(x,y) = gcd(m,n)

Now the loop invariants might require some explanation.
q is just part of the loop invariant not the program.
It is there to allow for Backward proof construction (BPC)
You start with the post condition an then try to reduce to the
precondition.

-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
From: Rob Warnock
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <m8SdnXnXhZQjJs7bnZ2dnUVZ_hOdnZ2d@speakeasy.net>
Pascal Bourguignon  <···@informatimago.com> wrote:
+---------------
| ····@rpw3.org (Rob Warnock) writes:
| > John Thingstad <··············@chello.no> wrote:
| > | The bad new is that finding loop invariants is fairly difficult with
| > | the imperative constructs (Hoare logic)
| > +---------------
| >
| > Quite true, in the general case.[1]  Fortunately, almost all the loops
| > one tends to write in "normal" code have a small set of loop-invariant
| > patterns that work well. ...
| 
| I don't understand. You mean some loops are written without their
| invariant explicited first?   That's not how I was taught (in school)
| to write loops...
+---------------

Please refer to the "Subject:" of this thread again. Many practicing
programmers didn't *take* computer science in school, and even of those
who did I daresay most were *not* exposed to writing loops properly,
that is, with loop invariants developed as a matter of course.

Pity, that.


-Rob

-----
Rob Warnock			<····@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607
From: Raffael Cavallaro
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <2007051711521038165-raffaelcavallaro@pasdespamsilvousplaitmaccom>
On 2007-05-17 10:49:13 -0400, ····@stablecross.com (Bob Felts) said:

>> 
>> I'd say that the laws of physics and they way they impact hardware
>> design are a pretty heavy constraint on algorithm design.
> 
> How so?   Classical computers are just turing machines; they don't care
> about the algorithm being run.

Because at the end of the day for an algorithm to be useful, it has to 
run on a real machine with real data, and real machines and data have 
specific characteristics of access times to and sizes of different 
levels of memory, time to recompute a value rather than caching it, 
error tolerances, ability to inerpolate or extrapolate from previous 
computations, size of the data set, idiosyncratic characteristics of 
the common data set, network latency, etc. and these real world 
characteristics will influence how you design your algorithm.
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hy9eaw.13sxjua11aza40N%wrf3@stablecross.com>
Raffael Cavallaro <················@pas-d'espam-s'il-vous-plait-mac.com>
wrote:

> On 2007-05-17 10:49:13 -0400, ····@stablecross.com (Bob Felts) said:
> 
> >> 
> >> I'd say that the laws of physics and they way they impact hardware
> >> design are a pretty heavy constraint on algorithm design.
> > 
> > How so?   Classical computers are just turing machines; they don't care
> > about the algorithm being run.
> 
> Because at the end of the day for an algorithm to be useful,

Why is that the primary measure for algorithms?  A lot of math isn't
"useful" (so I'm told, my field was engineering, so I didn't get to
study a lot of the esoteric stuff).

> it has to run on a real machine with real data, and real machines and data
> have specific characteristics of access times to and sizes of different
> levels of memory, time to recompute a value rather than caching it, error
> tolerances, ability to inerpolate or extrapolate from previous
> computations, size of the data set, idiosyncratic characteristics of the
> common data set, network latency, etc. and these real world
> characteristics will influence how you design your algorithm.

Not if I'm interested in the theoretical characteristics of the
algorithm.  Computer science, like math, doesn't _have_ to be practical.
From: Raffael Cavallaro
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <2007051714294643042-raffaelcavallaro@pasdespamsilvousplaitmaccom>
On 2007-05-17 13:21:31 -0400, ····@stablecross.com (Bob Felts) said:

> Computer science, like math, doesn't _have_ to be practical.

On the contrary, I would say that this is precisely the distinction 
between Computer Science and Mathematics. The product of Computer 
Science must be implementable on some real machine or else it is just a 
pure Mathematical curiousity.
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hy9mv3.1023x251oa4xhuN%wrf3@stablecross.com>
Raffael Cavallaro <················@pas-d'espam-s'il-vous-plait-mac.com>
wrote:

> On 2007-05-17 13:21:31 -0400, ····@stablecross.com (Bob Felts) said:
> 
> > Computer science, like math, doesn't _have_ to be practical.
> 
> On the contrary, I would say that this is precisely the distinction 
> between Computer Science and Mathematics. The product of Computer 
> Science must be implementable on some real machine or else it is just a
> pure Mathematical curiousity.

Then we disagree on the very definition of computer science.
"Computable" and "real machine" aren't necessarily congruent, since (I
would think) we can imagine computing engines that we can't (yet) build.
From: Raffael Cavallaro
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <2007051718582422503-raffaelcavallaro@pasdespamsilvousplaitmaccom>
On 2007-05-17 16:25:11 -0400, ····@stablecross.com (Bob Felts) said:

> "Computable" and "real machine" aren't necessarily congruent, since (I
> would think) we can imagine computing engines that we can't (yet) build.

Pretty sure that the Church-Turing thesis states that they are 
congruent - any computable algorithm is computable on any 
turing-equivalent machine:

"in other words, all ordinary computers are equivalent to each other in 
terms of theoretical computational power, and it is not possible to 
build a calculation device that is more powerful than the simplest 
computer (a Turing machine)."*

Your assertion amounts to a challenge to the Church-Turing thesis.



*<http://en.wikipedia.org/wiki/Church-Turing_thesis>
From: Paul Wallich
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <f2io12$m9a$1@reader2.panix.com>
Raffael Cavallaro wrote:
> On 2007-05-17 16:25:11 -0400, ····@stablecross.com (Bob Felts) said:
> 
>> "Computable" and "real machine" aren't necessarily congruent, since (I
>> would think) we can imagine computing engines that we can't (yet) build.
> 
> Pretty sure that the Church-Turing thesis states that they are congruent 
> - any computable algorithm is computable on any turing-equivalent machine:
> 
> "in other words, all ordinary computers are equivalent to each other in 
> terms of theoretical computational power, and it is not possible to 
> build a calculation device that is more powerful than the simplest 
> computer (a Turing machine)."*

But no real computer is even as powerful as a Turing machine, since it 
has neither an arbitrarily large number of states nor an infinite tape. 
So new machines may extend the range of the actually computable, as 
opposed to Computable.

paul
From: Raffael Cavallaro
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <2007051723454031729-raffaelcavallaro@pasdespamsilvousplaitmaccom>
On 2007-05-17 19:21:05 -0400, Paul Wallich <··@panix.com> said:

> So new machines may extend the range of the actually computable, as 
> opposed to Computable.

Or, to put it in other words, future machines may extend the range of 
the efficiently computable, as opposed to the merely computable. But 
this of course is just arguing my original point, that the real-world 
constraints of real-world machines necessarily influence algorithm 
design, and so Computer Science is concerned with these real-world 
constraints as well.
From: Paul Wallich
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <f2ke27$pav$1@reader2.panix.com>
Raffael Cavallaro wrote:
> On 2007-05-17 19:21:05 -0400, Paul Wallich <··@panix.com> said:
> 
>> So new machines may extend the range of the actually computable, as 
>> opposed to Computable.
> 
> Or, to put it in other words, future machines may extend the range of 
> the efficiently computable, as opposed to the merely computable. But 
> this of course is just arguing my original point, that the real-world 
> constraints of real-world machines necessarily influence algorithm 
> design, and so Computer Science is concerned with these real-world 
> constraints as well.

I think we're in violent agreement, but I'd put some caveats on your 
statement.

First, "efficiently" computable isn't quite the right word, because 
efficiency typically goes to the resources required, compared to some 
ideal, rather than "can I run this computation in less than the expected 
life of my computing system?". "feasibly" computable might be a better 
way of putting it.

Second, only part of computer science is concerned with those real-world 
constraints. There are also issues of algorithm design that are 
essentially orthogonal to the machine constraints (e.g. the number of 
comparisons made during a sort).

So I think it's best to say that computer science is not divorced from 
the real world, and yet they don't spend every moment in close proximity.

paul
From: Raffael Cavallaro
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <2007051811291142612-raffaelcavallaro@pasdespamsilvousplaitmaccom>
On 2007-05-18 10:43:18 -0400, Paul Wallich <··@panix.com> said:

> I think we're in violent agreement, but I'd put some caveats on your statement.

Yes, I think so too.

[snip]
> So I think it's best to say that computer science is not divorced from 
> the real world, and yet they don't spend every moment in close 
> proximity.

I'd say that Computer Science isn't divorced from the real world, and 
moreover, that it defines its domain as that which is possibly 
computable in the real world (though maybe not efficiently with current 
technology).
From: Don Geddis
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87k5v6hz38.fsf@geddis.org>
Paul Wallich <··@panix.com> wrote on Thu, 17 May 2007:
> But no real computer is even as powerful as a Turing machine, since it has
> neither an arbitrarily large number of states nor an infinite tape. So new
> machines may extend the range of the actually computable, as opposed to
> Computable.

Naturally, resource constraints (time, memory, money, etc.) prevent any
real machine from computing some functions that are theoretically computable.
And, as you improve the resources available, some of those possibly-computable
functions become feasible to compute in the real world.

But the real interest is the opposite position.  There are some functions
which are not even theoretically computable.  And the question is whether you
could ever build a physical device that might compute some of those functions.
Would quantum computing do it?  (Answer: no.)  Is there any hypercomputer
which is realizable in our physical world?

The Church-Turing Thesis hypothesizes that the answer is no.

        -- Don
_______________________________________________________________________________
Don Geddis                  http://don.geddis.org/               ···@geddis.org
Conscious is when you are aware of something, and conscience is when you wish
you weren't.
From: Aatu Koskensilta
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <zh45i.168529$2_3.107839@reader1.news.saunalahti.fi>
On 2007-05-18, in comp.lang.lisp, Don Geddis wrote:
> But the real interest is the opposite position.  There are some functions
> which are not even theoretically computable.  And the question is whether you
> could ever build a physical device that might compute some of those functions.
> Would quantum computing do it?  (Answer: no.)  Is there any hypercomputer
> which is realizable in our physical world?
>
> The Church-Turing Thesis hypothesizes that the answer is no.

It doesn't. The Church-Turing thesis is about functions that are
mechanically computable, in the sense that there is a finite list of steps,
all of which are sufficiently simple, carrying out of which computes the
function. The thesis might well be true even if there were physical systems
that in some sense computed non-recursive functions -- it's a conceptual
thesis, not a hypothesis about the physical world.

-- 
Aatu Koskensilta (················@xortec.fi)

"Wovon man nicht sprechen kann, daruber muss man schweigen"
 - Ludwig Wittgenstein, Tractatus Logico-Philosophicus
From: Don Geddis
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87bqga16sh.fsf@geddis.org>
Aatu Koskensilta <················@xortec.fi> wrote on Wed, 23 May 2007:
> On 2007-05-18, in comp.lang.lisp, Don Geddis wrote:
>> But the real interest is the opposite position.  There are some functions
>> which are not even theoretically computable.  And the question is whether
>> you could ever build a physical device that might compute some of those
>> functions.  Would quantum computing do it?  (Answer: no.)  Is there any
>> hypercomputer which is realizable in our physical world?
>> The Church-Turing Thesis hypothesizes that the answer is no.
>
> It doesn't. The Church-Turing thesis is about functions that are
> mechanically computable, in the sense that there is a finite list of steps,
> all of which are sufficiently simple, carrying out of which computes the
> function.

You're not quite right about this.  There are a lot of different variations
of the C-T Thesis, and it's just an informal conjecture in any case, not a
mathematically proven result.  You may be right that the original formulations
in the 1930s and '40s were more limited, but that phrase is generally used
to mean that Turing Machines can compute anything that can be computed.

For example, from Wikipedia
        http://en.wikipedia.org/wiki/Church-turing_thesis
we see these sample formulations:
        Every 'function which would naturally be regarded as computable' can
        be computed by a Turing machine.
or
        Every function that can be physically computed can be computed by a
        Turing machine.

The basic problem with your supposed correction is your phrase about each
step being "sufficiently simple".  That's an ambiguous requirement, and
different resolutions lead to different conclusions about what the C-T
Thesis means.

> The thesis might well be true even if there were physical systems that in
> some sense computed non-recursive functions -- it's a conceptual thesis,
> not a hypothesis about the physical world.

I think it would be a huge surprise if there were physical systems that
computed non-recursive functions.  You may be narrowly correct that this is
not what Turing and Church were originally writing about, but it's certainly
within the scope of what is generally understood today as the informal claim
of the "Church-Turing Thesis".

        -- Don
_______________________________________________________________________________
Don Geddis                  http://don.geddis.org/               ···@geddis.org
Once there was a time when all people believed in God and the church ruled.
This time is called the Dark Ages.
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hya37g.17jz4w718pmfuoN%wrf3@stablecross.com>
Raffael Cavallaro <················@pas-d'espam-s'il-vous-plait-mac.com>
wrote:

> On 2007-05-17 16:25:11 -0400, ····@stablecross.com (Bob Felts) said:
> 
> > "Computable" and "real machine" aren't necessarily congruent, since (I
> > would think) we can imagine computing engines that we can't (yet) build.
> 
> Pretty sure that the Church-Turing thesis states that they are 
> congruent - any computable algorithm is computable on any 
> turing-equivalent machine:
> 
> "in other words, all ordinary computers are equivalent to each other in
> terms of theoretical computational power, and it is not possible to 
> build a calculation device that is more powerful than the simplest 
> computer (a Turing machine)."*
> 
> Your assertion amounts to a challenge to the Church-Turing thesis.

The Wikipedia article you cited also provides a challenge to this
thesis:  "Disproof would be possible only if humanity found ways of
building hypercomputers whose results should 'naturally be regarded as
computable'."

Also, I'm not convinced that humans are Turing machines.

> 
> 
> 
> *<http://en.wikipedia.org/wiki/Church-Turing_thesis>
From: Raffael Cavallaro
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <2007051723350382327-raffaelcavallaro@pasdespamsilvousplaitmaccom>
On 2007-05-17 22:17:41 -0400, ····@stablecross.com (Bob Felts) said:

> The Wikipedia article you cited also provides a challenge to this
> thesis:  "Disproof would be possible only if humanity found ways of
> building hypercomputers whose results should 'naturally be regarded as
> computable'."

I'm just pointing out that you're challenging one of the cornerstones 
of Computer Science (the Church-Turing Thesis) when you assert that 
computable and computable-on-a-real-machine are not essentially the 
same thing.
From: Kent M Pitman
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <uy7jmol4g.fsf@nhplace.com>
····@stablecross.com (Bob Felts) writes:

> Also, I'm not convinced that humans are Turing machines.

Indeed.

(Turing Machines have more storage.)
From: Rob St. Amant
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <f2k3uq$8me$1@blackhelicopter.databasix.com>
Kent M Pitman <······@nhplace.com> writes:

> ····@stablecross.com (Bob Felts) writes:
>
>> Also, I'm not convinced that humans are Turing machines.
>
> Indeed.
>
> (Turing Machines have more storage.)

If I remember my computer science theory classes correctly (which is
questionable), a Turing machine with a finite tape can be transformed
into a finite state automaton.
From: Tim Bradshaw
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179498757.686235.214460@u30g2000hsc.googlegroups.com>
On May 18, 12:51 pm, ·······@ncsu.edu (Rob St. Amant) wrote:

> If I remember my computer science theory classes correctly (which is
> questionable), a Turing machine with a finite tape can be transformed
> into a finite state automaton.

Yes, of course it can.  After all that's really what it *is* :-) - the
thing itself is has a finite number of states and there are a finite
number more stored on the (finite!) tape.

--tim
From: Aatu Koskensilta
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <A545i.168525$2_3.130676@reader1.news.saunalahti.fi>
On 2007-05-18, in comp.lang.lisp, Bob Felts wrote:
> Also, I'm not convinced that humans are Turing machines.

Human beings are obviously not Turing machines -- they don't have an
infinite tape, a reader head, a set of states, and so on, and don't go about
scanning a tape, erasing and writing symbols on it. Perhaps you had
something more interesting than this trivial observation in mind?

-- 
Aatu Koskensilta (················@xortec.fi)

"Wovon man nicht sprechen kann, daruber muss man schweigen"
 - Ludwig Wittgenstein, Tractatus Logico-Philosophicus
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hylytn.1kforwd1dwxrgyN%wrf3@stablecross.com>
Aatu Koskensilta <················@xortec.fi> wrote:

> On 2007-05-18, in comp.lang.lisp, Bob Felts wrote:
> > Also, I'm not convinced that humans are Turing machines.
> 
> Human beings are obviously not Turing machines -- they don't have an
> infinite tape, a reader head, a set of states, and so on, and don't go about
> scanning a tape, erasing and writing symbols on it. Perhaps you had
> something more interesting than this trivial observation in mind?

Well, yes.  It wasn't the form of the machine that is of interest, but
what the machine can do.
From: Aatu Koskensilta
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <nNg5i.168815$1p7.51751@reader1.news.saunalahti.fi>
On 2007-05-24, in comp.lang.lisp, Bob Felts wrote:
> Well, yes.  It wasn't the form of the machine that is of interest, but
> what the machine can do.

What do you take "humans are Turing machines" to mean, then, if not the
trivially false claim?

-- 
Aatu Koskensilta (················@xortec.fi)

"Wovon man nicht sprechen kann, daruber muss man schweigen"
 - Ludwig Wittgenstein, Tractatus Logico-Philosophicus
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hym3v3.16ff2yd1urx9eN%wrf3@stablecross.com>
Aatu Koskensilta <················@xortec.fi> wrote:

> On 2007-05-24, in comp.lang.lisp, Bob Felts wrote:
> > Well, yes.  It wasn't the form of the machine that is of interest, but
> > what the machine can do.
> 
> What do you take "humans are Turing machines" to mean, then, if not the
> trivially false claim?

I said that I'm not convinced that humans are Turning machines, i.e. we
may not be able to make computers do what we do.
From: Aatu Koskensilta
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <yXk5i.168993$062.51292@reader1.news.saunalahti.fi>
On 2007-05-24, in comp.lang.lisp, Bob Felts wrote:
> Aatu Koskensilta <················@xortec.fi> wrote:
>
>> What do you take "humans are Turing machines" to mean, then, if not the
>> trivially false claim?
>
> I said that I'm not convinced that humans are Turning machines, i.e. we
> may not be able to make computers do what we do.

We can't make computers eat hamburgers so trivially we may not be able to
make computers do what we do. In order to evaluate the claim that "humans
are Turing machines" it must be explained what exactly is meant by this.
This is not a trivial task and in much of the relevant literature the idea
is just bandied about without paying attention to what it is actually
supposed to mean, often leading to rather queer arguments. As an example,
when considering G�delian arguments against AI often we find people talking
about "mathematical statements in principle acceptable to humans" with total
disregard to such questions as whether there is any definite totality of
such principles, or what it means for a mathematical statement to be "in
principle acceptable", and so on and so forth.

-- 
Aatu Koskensilta (················@xortec.fi)

"Wovon man nicht sprechen kann, daruber muss man schweigen"
 - Ludwig Wittgenstein, Tractatus Logico-Philosophicus
From: Joe Marshall
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1180032513.069993.261020@n15g2000prd.googlegroups.com>
On May 24, 11:37 am, Aatu Koskensilta <················@xortec.fi>
wrote:
> On 2007-05-24, in comp.lang.lisp, Bob Felts wrote:
>
> > Aatu Koskensilta <················@xortec.fi> wrote:
>
> >> What do you take "humans are Turing machines" to mean, then, if not the
> >> trivially false claim?
>
> > I said that I'm not convinced that humans are Turning machines, i.e. we
> > may not be able to make computers do what we do.
>
> We can't make computers eat hamburgers so trivially we may not be able to
> make computers do what we do.

`Koskensilta's variant' of the standard Turing test.

The domain of discourse is not usually this prosaic.

> In order to evaluate the claim that "humans
> are Turing machines" it must be explained what exactly is meant by this.
> This is not a trivial task and in much of the relevant literature the idea
> is just bandied about without paying attention to what it is actually
> supposed to mean, often leading to rather queer arguments. As an example,
> when considering Gödelian arguments against AI often we find people talking
> about "mathematical statements in principle acceptable to humans" with total
> disregard to such questions as whether there is any definite totality of
> such principles, or what it means for a mathematical statement to be "in
> principle acceptable", and so on and so forth.

It is true that you can get lost in these arguments, but the gist of
the argument is that there is something distinctly special about human
reasoning that transcends what is commonly considered computable.  The
question seems to make sense without getting into esoteric detail.
From: Rob St. Amant
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <f346ao$766$1@blackhelicopter.databasix.com>
Aatu Koskensilta <················@xortec.fi> writes:

> On 2007-05-24, in comp.lang.lisp, Bob Felts wrote:
>> Well, yes.  It wasn't the form of the machine that is of interest, but
>> what the machine can do.
>
> What do you take "humans are Turing machines" to mean, then, if not the
> trivially false claim?

I think it's generally used as shorthand for Newell and Simon's
physical symbol system hypothesis, but that may just be my
interpretation.
From: Don Geddis
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <877iqy16a0.fsf@geddis.org>
Aatu Koskensilta <················@xortec.fi> wrote on Thu, 24 May 2007:
> On 2007-05-24, in comp.lang.lisp, Bob Felts wrote:
>> Well, yes.  It wasn't the form of the machine that is of interest, but
>> what the machine can do.
>
> What do you take "humans are Turing machines" to mean, then, if not the
> trivially false claim?

Surely the obvious two-part claim of Computationalism, that (1) the only
interesting part of human brains is their computational function; and (2) the
functions that are computed by human brains are also computable by Turing
Machines.  Which leads to the easy conclusion that a computer could
instantiate a consciousness/mind, if only it were running the right
algorithms.

You can agree or disagree with this theory, but you shouldn't get caught up
in word games about what "humans are (not) Turing Machines" might mean.
Surely the intent is pretty obvious.

        -- Don
_______________________________________________________________________________
Don Geddis                  http://don.geddis.org/               ···@geddis.org
A celibate clergy is an especially good idea, because it tends to suppress any
hereditary propensity toward fanaticism.  -- Carl Sagan, "Contact"
From: Antony Sequeira
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <QJudnVC96pvS2tDbnZ2dnUVZ_qarnZ2d@comcast.com>
Raffael Cavallaro wrote:
> 
> "in other words, all ordinary computers are equivalent to each other in 
> terms of theoretical computational power, and it is not possible to 
> build a calculation device that is more powerful than the simplest 
> computer (a Turing machine)."*
> 
> Your assertion amounts to a challenge to the Church-Turing thesis.
> 
> 
> 
> *<http://en.wikipedia.org/wiki/Church-Turing_thesis>
> 
A computer scientist sees no difference between my 486PC from early 90s 
and my current AMD X2 dual core x86_64 box,
a software engineer does.

I am sure they "are equivalent to each other in terms of theoretical 
computational power"

Years ago, when I was still in college, this was a joke told by one of 
my Professors (the joke is a bit sexist)

There is an empty room and a scientist and an engineer are waiting in 
the middle of the room.
A beautiful woman comes through the door.
Every step she takes, is half as long as the previous.

The scientist says - "she'll never reach me"

The engineer says - "she'll be close enough"


-Antony
From: Rainer Joswig
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <joswig-D2FEF2.16361216052007@news-europe.giganews.com>
In article <··············@telus.net.no.spam>,
 Wade Humeniuk <········@telus.net.no.spam> wrote:

> I have found the articles in this thread fascinating.  There
> seems to a bias against formal schooling and learning when
> it comes to computers.  Comments you might hear down at
> the bar about those "university ivory types" types.
> (Yet in the last few years I have resorted to some
> remedial academic learning that is missing from my
> computer background. Know what?  There is ton of
> useful knowledge in there. Problems which seemed
> intractable, with a little bit of learning, no
> longer are.)
> 
> The idea of something like "self-taught" surgeons operating
> on me makes my skin crawl (an analogy EN used often).  Yet
> "self-taught" programmer does not.  I suppose its that a
> programmer cannot do as much damage (or can they?)  What
> is the difference?
> 
> Try these on for size
> 
> "self-taught" airline pilot
> "self-taught" manager
> "self-taught" President of the United States
> "self-taught" bomb maker
> "self-taught" musician
> 
> Makes me think...
> 
> Wade


Let's form two companies. We hire.

One with 'self-taught' programmers. One with programmers
with university degree. I take the latter company.
Which one is yours? ;-)

-- 
http://lispm.dyndns.org
From: Tim Bradshaw
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179331237.218902.53390@h2g2000hsg.googlegroups.com>
On May 16, 3:36 pm, Rainer Joswig <······@lisp.de> wrote:
>
> Let's form two companies. We hire.
>
> One with 'self-taught' programmers. One with programmers
> with university degree. I take the latter company.
> Which one is yours? ;-)

Would depend on the degree and what for.  For junior people I'd
probably look for CS types.  For senior people I'd probably tend to
avoid them.
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hy96s7.4vilrpmnpmffN%wrf3@stablecross.com>
Rainer Joswig <······@lisp.de> wrote:

> 
> Let's form two companies. We hire.
> 
> One with 'self-taught' programmers. One with programmers
> with university degree. I take the latter company.
> Which one is yours? ;-)

Flip a coin.  I've seen "self-taught" people who were incredible and
degreed people who were useless.  And vice versa.

When computer science becomes an actual profession, like medicine or
law; where to participate one must first prove oneself to the
established community -- then I'll take the degreed programmers.

But right now we're a community of hacks where anyone who can write a
"for" loop can call him/herself a programmer.  That's not a professional
discipline.
From: Tayssir John Gabbour
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179489430.844344.118550@u30g2000hsc.googlegroups.com>
On May 17, 4:42 pm, ····@stablecross.com (Bob Felts) wrote:
> When computer science becomes an actual profession, like medicine or
> law; where to participate one must first prove oneself to the
> established community -- then I'll take the degreed programmers.
>
> But right now we're a community of hacks where anyone who can write a
> "for" loop can call him/herself a programmer.  That's not a professional
> discipline.

Some might be interested in the book _Disciplined Minds_, which is
about the professionals' role in society. How to identify the
ideologies which shape professional life, and even fight them. Free
online podcasts of a radio show host reading it on air can be
downloaded:

<http://disciplined-minds.com/>

Incidentally, very often, people create alternative institutions when
the conventional ones impose too much baggage or can no longer even
function.


Tayssir
From: ·········@gmail.com
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179501036.692691.276050@q23g2000hsg.googlegroups.com>
On May 17, 4:42 pm, ····@stablecross.com (Bob Felts) wrote:
> When computer science becomes an actual profession, like medicine or
> law; where to participate one must first prove oneself to the
> established community -- then I'll take the degreed programmers.

Umm. I'm not sure historically contingent self-selecting groups are
the best measures of anything that lies outside the self-interest of
those groups. (Not to mention the status of medical 'science', which,
through no fault of medical scientists but due to the complexity of
the human organism, seems to me in large respects at the stage of "We
notice that FOR loops using the iteration variable 'i' are often
inefficient, therefor we counsel the use of other letters of the
alphabet"...)

I am neither a computer scientist nor a professional programmer, so I
know not of which I speak, but it seems to me that the description
"programming" is now (or will be) of similar breadth to "painting",
"drawing" or "writing". Just as there are many types of painter,
drawer and writer, so there are many types of "programmer". And just
as you wouldn't necessarily want Walt Whitman to write your user
manual, perhaps there are programmers more suited to doing something
that has never been done before, and those that are more suited to
bolting together Java libraries to do something n-tiered and
enterprisy.

While not a computer scientist, I am a member of a profession that
required (at least where I qualified) an advanced university degree to
be eligible to join it. I have found that the number of times I have
applied specific items of knowledge I learned at university to my life
as a professional are vanishingly small. What has marked me (and most
of my fellow professionals) out from those that did not undergo the
training I have is (a) a certain mindset or approach to problems; and
(b) a knowledge of when to be confident (and when to be hesitant) in
diagnoses.  To pick up on an earlier message in this thread, my
profession is some hundreds of years older than "programming", and I'm
not convinced that there is a known best mindset for doing things with
computers.

(Is there any reason why doing things with computers should form a
single 'professional' category in the way that 'doing things with
pipes' or 'doing things with metal' doesn't?)

I refrain from commenting on the role of the university in modern
culture, except to say that some of the references in this thread have
made me think about reading c.l.l. regularly again.)

JQS
From: Bob Felts
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1hyb49k.7ktidmcp520wN%wrf3@stablecross.com>
<·········@gmail.com> wrote:

> On May 17, 4:42 pm, ····@stablecross.com (Bob Felts) wrote:
> > When computer science becomes an actual profession, like medicine or
> > law; where to participate one must first prove oneself to the
> > established community -- then I'll take the degreed programmers.
> 
> Umm. I'm not sure historically contingent self-selecting groups are the
> best measures of anything that lies outside the self-interest of those
> groups. (Not to mention the status of medical 'science', which, through no
> fault of medical scientists but due to the complexity of the human
> organism, seems to me in large respects at the stage of "We notice that
> FOR loops using the iteration variable 'i' are often inefficient, therefor
> we counsel the use of other letters of the alphabet"...)

Self-interest isn't always a bad thing.  Doctors, for example, by and
large realize that mistakes are costly, possibly deadly, and detrimental
to their profession and, therefore, to the individual doctor.  It is in
their best interest to ensure that their patients are not harmed and,
wherever possible, helped.  But that neatly coincides with the interest
of the patient, too.  That means that when I choose a doctor, I want one
who did well in school, is an MD, and passed the training demanded of
his peers.  You won't catch me going to a chiropractor since they are,
to be blunt, quacks.  They flunk the science component.

> 
> I am neither a computer scientist nor a professional programmer, so I know
> not of which I speak, but it seems to me that the description
> "programming" is now (or will be) of similar breadth to "painting",
> "drawing" or "writing". Just as there are many types of painter, drawer
> and writer, so there are many types of "programmer".

There is certainly an artistic side to programming.  That's why Knuth
named his famous multi-volume set "The Art of Computer Programming."  On
the other hand, artists create art for consumption by humans.
Programmers create code for consumption by humans _and_ computers.
Computers are unforgiving, rigid, humorless with no appreciation for
beauty.  Therefore there has to be a mixture of art and science.  Art
for the humans and science for the machine.

I would also argue that "painter" isn't the best example to use and that
"writer" would be more appropriate.  A painting certainly may try to
communicate a painter's thoughts, but it doesn't really matter if the
viewer accurately divines the painter's intent.  Accurate communication
of intent is vital to the programmer.  He has to get a message across to
the computer and the human.  The less either audience "gets" the
message, the less effective the programmer is.

> And just as you wouldn't necessarily want Walt Whitman to write your user
> manual, perhaps there are programmers more suited to doing something that
> has never been done before, and those that are more suited to bolting
> together Java libraries to do something n-tiered and enterprisy.
> 

Certainly there are specialties in comp sci. just like there are
specialties in medicine.  The issue is whether or not the programmer is
competent in their domain.  We don't have (or, perhaps more accurately,
apply) good metrics when judging if people are capable before using
them.

> While not a computer scientist, I am a member of a profession that
> required (at least where I qualified) an advanced university degree to
> be eligible to join it. I have found that the number of times I have
> applied specific items of knowledge I learned at university to my life
> as a professional are vanishingly small.

That's larely true for me, too.  My degree is Applied Math; my
profession is software.

>  What has marked me (and most of my fellow professionals) out from those
> that did not undergo the training I have is (a) a certain mindset or
> approach to problems; and (b) a knowledge of when to be confident (and
> when to be hesitant) in diagnoses.

That may be more valuable than you know.  The number one trait of
incompetents is that they don't know they are incomptent.  I know too
many software engineers who "rush in where angels fear to tread" and
make a hash of whatever they touch.  Then they're surprised when I
reject their work and make them do it again.

My dad was a doctor.  I'll never forget the time when I was younger and
wasn't feeling well.  He didn't think there was anything seriously wrong
with me, but he didn't want to trust himself, so he had a colleague come
to our home and give a second opinion.  It's probably been 40 some-odd
years since that happned, but I've never forgotten it.

> To pick up on an earlier message in this thread, my profession is some
> hundreds of years older than "programming", and I'm not convinced that
> there is a known best mindset for doing things with computers.

That's one reason why we aren't a profession, yet. 
  
> 
> (Is there any reason why doing things with computers should form a
> single 'professional' category in the way that 'doing things with
> pipes' or 'doing things with metal' doesn't?)

The cost of incompetent software engineering is enormous.

> 
> I refrain from commenting on the role of the university in modern
> culture, except to say that some of the references in this thread have
> made me think about reading c.l.l. regularly again.)
> 

There are multiple ways for someone to become competent in their field;
the university is just one of them.  It works for some and not for
others.  I'm partly self-taught, partly mentored (thanks Eric S. and
Dave H!), partly university educated.  I don't care so much how someone
comes by their skill, but that they be skilled.
From: Greg Menke
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <m34pmakr48.fsf@venus.pienet>
····@stablecross.com (Bob Felts) writes:

>   
> > 
> > (Is there any reason why doing things with computers should form a
> > single 'professional' category in the way that 'doing things with
> > pipes' or 'doing things with metal' doesn't?)
> 
> The cost of incompetent software engineering is enormous.

It is in metalworking as well.  An incompetent operator can wreck a
machine or introduce an error in production which makes it through QA
and then causes catastrophic failure in a mechanism out in the world.

There are lots of classes & types of welding and machinery operation as
well as pipefitting.  Certainly no-one would argue that a pipefitter
that works on 1000psi superheat steam systems is the same as a guy that
installs residential hot water radiators or pipe organs.


Regards,

Gregm
From: Edi Weitz
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <umz04j0i2.fsf@agharta.de>
On Wed, 16 May 2007 14:09:57 GMT, Wade Humeniuk <········@telus.net.no.spam> wrote:

> Try these on for size
>
> [...]
> "self-taught" President of the United States

Hmm.  They're not self-taught?

-- 

Lisp is not dead, it just smells funny.

Real email: (replace (subseq ·········@agharta.de" 5) "edi")
From: Espen Vestre
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <m1zm44x249.fsf@gazonk.vestre.net>
Edi Weitz <········@agharta.de> writes:

>> "self-taught" President of the United States
>
> Hmm.  They're not self-taught?

Of course not - it's a family business!
-- 
  (espen)
From: Rainer Joswig
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <joswig-80D569.16451916052007@news-europe.giganews.com>
In article <··············@gazonk.vestre.net>,
 Espen Vestre <·····@vestre.net> wrote:

> Edi Weitz <········@agharta.de> writes:
> 
> >> "self-taught" President of the United States
> >
> > Hmm.  They're not self-taught?
> 
> Of course not - it's a family business!

Any education would be better than none.

-- 
http://lispm.dyndns.org
From: Wade Humeniuk
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <m2k5v8494v.fsf@telus.net.no.spam>
Edi Weitz <········@agharta.de> writes:

> On Wed, 16 May 2007 14:09:57 GMT, Wade Humeniuk <········@telus.net.no.spam> wrote:
>
>> Try these on for size
>>
>> [...]
>> "self-taught" President of the United States
>
> Hmm.  They're not self-taught?
>

Unfortunately it looks like the current one is self-taught.  I hurts
my brain to consider this oxymoron.

To directly answer the original question is, Yes you can learn
computer science from a school. And Yes, you can learn computer
science away from school.  And maybe, you can receive instantaneous
enlightenment about computer science and you can skip the first two
options.

Wade
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179395240.384417.108080@n59g2000hsh.googlegroups.com>
On May 16, 4:09 pm, Wade Humeniuk <········@telus.net.no.spam> wrote:

> "self-taught" musician
>
> Makes me think...
>
> Wade

I'm a  musician myself ,playing  accordeon, & keyboard or rather
former musician because I don't practice much in the last year or so.
I learned from a private tutor for about 5 years and beside that I
finished primary music school (4 year course). In both places I was
playing by music notation mostly music exercises, classical pieces
and  folk songs & dances. I've worked a lot with a self-thought
musicians.They don't understand notes and learned playing by ear  or
picking up pieces here and then. A lot of them were better than me in
folk/pop songs & dances ( classic pieces has a very narrow audience)
and far better in learning by ear . But whenever I learned some folk
dance by notes , songs are considered very easy,  almost none of them
could be better in it than me. The best folk players in my country has
a formal education which is usually unversity  or at least high school
of music.There is few god-given-talent musicians who could wipe out
any educated player but those are very very rare.
From: Wade Humeniuk
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <m2ps4z1stl.fsf@telus.net.no.spam>
fireblade <·················@gmail.com> writes:

> On May 16, 4:09 pm, Wade Humeniuk <········@telus.net.no.spam> wrote:
>
>> "self-taught" musician
>>
>> Makes me think...
>>
>> Wade
>
> I'm a  musician myself ,playing  accordeon, & keyboard or rather
> former musician because I don't practice much in the last year or so.
> I learned from a private tutor for about 5 years and beside that I
> finished primary music school (4 year course). In both places I was
> playing by music notation mostly music exercises, classical pieces
> and  folk songs & dances. I've worked a lot with a self-thought
> musicians.They don't understand notes and learned playing by ear  or
> picking up pieces here and then. A lot of them were better than me in
> folk/pop songs & dances ( classic pieces has a very narrow audience)
> and far better in learning by ear . But whenever I learned some folk
> dance by notes , songs are considered very easy,  almost none of them
> could be better in it than me. The best folk players in my country has
> a formal education which is usually unversity  or at least high school
> of music.There is few god-given-talent musicians who could wipe out
> any educated player but those are very very rare.

This is what has also happened in the programming field.  Its hit the
ceiling and seems in a perpetual fog.  Its stagnation is mostly
because of the self-taught phenomena.  Its "those who do not learn
from history are doomed to repeat it".  I think Dijkstra was right
about the hard truths.

Without the externalization of knowledge in a formal form (like
musical notation) knowledge and abilities cannot be built up.  People
just get lost in a chaotic soup and are pushed around by any thoughts.

Wade
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179745302.636249.23990@x18g2000prd.googlegroups.com>
On May 17, 3:29 pm, Wade Humeniuk <········@telus.net.no.spam> wrote:
> Without the externalization of knowledge in a formal form (like
> musical notation) knowledge and abilities cannot be built up.  People
> just get lost in a chaotic soup and are pushed around by any thoughts.
>
> Wade

Agreed with above.

Civilization advances by extending the number of important operations
we can perform without thinking.
      --- Alfred North Whitehead
From: Mark Tarver
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179261864.029734.280320@p77g2000hsh.googlegroups.com>
On May 15, 1:20 am, Joe Marshall <··········@gmail.com> wrote:
 This is clearly flamebait, so kill this thread if you aren't
interested.

No its not flamebait Joe.  It certainly got me going.  A slightly
reworked version of my response to your question is on

http://www.lambdassociates.org/Blog/hackers.htm

in an essay called 'Hackers and Fighters'.

Thanks for posting the question.

Mark
From: ··········@gmail.com
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179271711.210355.91670@k79g2000hse.googlegroups.com>
On May 14, 5:20 pm, Joe Marshall <··········@gmail.com> wrote:
> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
>
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
>
> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

Good programmers should be able to solve complex problems and
understand advanced techniques such as recursion, but they don't have
to always recall it from memory.

In my mind, a good programmer is a good problem solver and a good
problem solver knows how to find the solution because they have a good
understanding of the fundamentals. In addition, good programmers like
what they do.
From: Frank Buss
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <zngq2dbqx11a.k3m83bodcvn3.dlg@40tude.net>
··········@gmail.com wrote:

> Good programmers should be able to solve complex problems and
> understand advanced techniques such as recursion, but they don't have
> to always recall it from memory.

Advanced techniques would be e.g. to write your own scripting language for
a given problem, recursion is very basic and a good programmer should
always be able to recall it from memory.

-- 
Frank Buss, ··@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
From: ········@gmail.com
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179277439.280432.109400@o5g2000hsb.googlegroups.com>
I am a staff research programmer and also take one graduate CS class
per semester at a university with a highly rated CS program in
Pittsburgh.

There are definitely faculty here who value the Software Engineering
side of programming and try to make sure their graduates will be able
to participate in Real World programming right away.  In fact, some
grad students complain about the amount of time spent programming and
engineering versus working on their research and writing their
thesis.  I don't think an emphasis on faculty writing papers and
obtaining grants is misplaced, as that is necessary to fund grad
students and staff like myself.  Being a professor is kind of like a
management position in that sense.  Being overly involved in the
implementation side can sometimes just get in the way.

There is also a lot interaction with industries interested in the
research going on here, which also gives students a sense what to
expect in the "real world".

In the last class I took we were given a wide range of programming
languages to choose from to implement homework assignments.  I chose
Lisp (which I wanted to learn better anyway so two birds with one
stone).  Programming competence was assumed as a given.  The last part
of the class was an extended team project, again with no programming
language specified.  There just had to be a program called "RunMe"
that accepted standard input and wrote results to standard output on
the Linux command line.

So, not all graduate schools are fully divorced from the outside
world.  In a good graduate school, you get to interact and learn from
other smart students and smart faculty that have an interest in
solving real problems.  But you need to choose carefully.

 -jimbo
From: Ken Tilton
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <%Ct2i.5023$m86.2240@newsfe12.lga>
········@gmail.com wrote:
> I am a staff research programmer and also take one graduate CS class
> per semester at a university with a highly rated CS program in
> Pittsburgh.
> 
> There are definitely faculty here who value the Software Engineering
> side of programming and try to make sure their graduates will be able
> to participate in Real World programming right away. 

Cool, we have an optimal case. Points of information:

How much refactoring goes on?

How often does working code get thrown out because it sucks?

How often do you hear things like, "Look, this system is going to be 
around for a while and has to be designed flexibly and cleanly enough to 
change shape smoothly down the road to accommodate new/changed 
requirements."?

That would be cool. I do not know if long-term sustainable code is what 
Joe had in mind with the CCA unit of measure (circles coded around), but 
it occurs to me that that is one thing folks might not learn to target 
until after (a) years of coding experience and (b) actually staring down 
the barrel of that longevity requirement.

Another thing. How often do you hear, OK, we are going to have handle a 
kajillion cases, if we code them up in any 3gl language we will be 
toast. We'll either never get them done or die of boredom or run 
screaming to bartender's school when the word comes down that the 
requirements have changed and we have to revise them all, so... we need 
to do some metaprogramming here, a DSL or something close. That sort of 
requirement is where the really cool code comes from.

kt

-- 
http://www.theoryyalgebra.com/

"Algebra is the metaphysics of arithmetic." - John Ray

"As long as algebra is taught in school,
there will be prayer in school." - Cokie Roberts

"Stand firm in your refusal to remain conscious during algebra."
    - Fran Lebowitz

"I'm an algebra liar. I figure two good lies make a positive."
    - Tim Allen
From: ········@gmail.com
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179337988.677502.180090@l77g2000hsb.googlegroups.com>
On May 15, 10:00 pm, Ken Tilton <···········@optonline.net> wrote:
> ········@gmail.com wrote:
> > I am a staff research programmer and also take one graduate CS class
> > per semester at a university with a highly rated CS program in
> > Pittsburgh.
>
> > There are definitely faculty here who value the Software Engineering
> > side of programming and try to make sure their graduates will be able
> > to participate in Real World programming right away.
>
> Cool, we have an optimal case. Points of information:
>
> How much refactoring goes on?
>
> How often does working code get thrown out because it sucks?
>
> How often do you hear things like, "Look, this system is going to be
> around for a while and has to be designed flexibly and cleanly enough to
> change shape smoothly down the road to accommodate new/changed
> requirements."?

This is actually why I (and other people working in my position) was
hired.  Grad students come and go, but a lot of the projects around
here outlive the tenure of any particular class of students.  Someone
has to stick around to maintain "institutional knowledge" when
students leave.

As for the students, it does mean that they need to read and modify
code written by people who were here before them and have long since
moved on.  I know I need to do some refactoring of code I maintain,
not sure how much of that the students do.

So, there are certainly limits to the amount of refactoring and
maintenance that a grad student will do.  But I don't think it's zero.

Although, I see that there are more than a few PhD students on year n
> 5 still ungraduated, so the amount of refactoring and maintenance
going on might be greater than I think :).

As for DSLs, there is at least one Lisp project in our department that
I am not a part of, but from what I have read of the overview
definitely looks like a DSL interface.  (It's a big knowlege
representation system, I think).

 -jimbo
From: numeromancer
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179291377.551997.287570@u30g2000hsc.googlegroups.com>
On May 14, 8:20 pm, Joe Marshall <··········@gmail.com> wrote:
> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
>
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
>
> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?


Education by quotation (and, I think, not off-topic at all):

<blockquote>
  The advanced [ETS] placement course in computer science includes
such topics as   recursion, operations on stacks, lists, and trees,
and the heap sort. These are complicated, machine-independent
abstractions that are not learned while sitting at a terminal. They
are learned by hearing competent lectures, studying a textbook, and by
sitting alone gleaning insights from drawing diagrams and walking
through prospective codes. ... Replying to the question, What is the
best single indicator of an applicant's programming ability, one of
today's most respected computer scientists, Edsger W. Dijkstra, wrote:
"...an absolute mastery of his native tongue."
</blockquote>

No school needed; just a lot of sitting alone, thinking.

<blockquote>
An excellent plumber is infinitely more admirable than an incompetent
philosopher. The society that scorns excellence in plumbing because
plumbing is a humble activity and tolerates shoddiness in philosophy
because it is an exalted activity will have neither good plumbing nor
good philosophy. Neither its pipes nor its theories will hold water. --
John Gardner
</blockquote>


<blockquote>
When asked how he developed his mathematical abilities so rapidly,
[Niels Abel] replied "by studying the masters, not their pupils."
</blockquote>

<blockquote>
As few people as possible between the productive spirits and the
hungering, receiving spirits! For the intermediaries falsify the
nourishment almost automatically when they mediate it; then, as a
reward for their mediation, they want too much for themselves, which
is taken away from the productive spirits: namely, interest,
admiration, time, money, and other things. Hence, one should consider
the teacher, no less than the shopkeeper, a necessary evil, to be kept
as small as possible.

Friederich Nietzsche
</blockquote>


These I pulled from

http://www.sourcetext.com/grammarian/newslettersv08/8.1.htm

in

http://www.sourcetext.com/grammarian/
From: Frank Buss
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <7nd9087novua.192rnxmag05vn.dlg@40tude.net>
numeromancer wrote:

>   The advanced [ETS] placement course in computer science includes
> such topics as   recursion, operations on stacks, lists, and trees,
> and the heap sort. These are complicated, machine-independent
> abstractions that are not learned while sitting at a terminal. They
> are learned by hearing competent lectures, studying a textbook, and by
> sitting alone gleaning insights from drawing diagrams and walking
> through prospective codes.

Ok, but do you need it? I doubt that a Visual Basic programmer, who creates
accounting systems, will ever need to write a heap sort algorithm. One
question was, do people gain anything by pursuing an advanced degree in
computer science? And I don't think this helps for creating many real-world
business applications.

-- 
Frank Buss, ··@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
From: Ken Tilton
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <I3x2i.2983$Pa5.236@newsfe12.lga>
Frank Buss wrote:
> numeromancer wrote:
> 
> 
>>  The advanced [ETS] placement course in computer science includes
>>such topics as   recursion, operations on stacks, lists, and trees,
>>and the heap sort. These are complicated, machine-independent
>>abstractions that are not learned while sitting at a terminal. They
>>are learned by hearing competent lectures, studying a textbook, and by
>>sitting alone gleaning insights from drawing diagrams and walking
>>through prospective codes.
> 
> 
> Ok, but do you need it? I doubt that a Visual Basic programmer, who creates
> accounting systems, will ever need to write a heap sort algorithm. One
> question was, do people gain anything by pursuing an advanced degree in
> computer science? And I don't think this helps for creating many real-world
> business applications.
> 

No, which is why "What is your favorite hashing algorithm?" is something 
only an angry person could ask in a banking environment. OTOH, when I 
stumbled on a treatment of finite state machines I realized, omigod, I 
could so use this, and I always do. (Google this group for a good 
relevant war story.) Then again, methinks the book was on software 
engineering, not computer science. uh-oh....

kzo

-- 
http://www.theoryyalgebra.com/

"Algebra is the metaphysics of arithmetic." - John Ray

"As long as algebra is taught in school,
there will be prayer in school." - Cokie Roberts

"Stand firm in your refusal to remain conscious during algebra."
    - Fran Lebowitz

"I'm an algebra liar. I figure two good lies make a positive."
    - Tim Allen
From: Numeromancer
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179324690.833222.37920@w5g2000hsg.googlegroups.com>
Frank Buss wrote:
> numeromancer wrote:
>
> >   The advanced [ETS] placement course in computer science includes
> > such topics as   recursion, operations on stacks, lists, and trees,
> > and the heap sort. These are complicated, machine-independent
> > abstractions that are not learned while sitting at a terminal. They
> > are learned by hearing competent lectures, studying a textbook, and by
> > sitting alone gleaning insights from drawing diagrams and walking
> > through prospective codes.
>
> Ok, but do you need it?

What is "it"?

> I doubt that a Visual Basic programmer, who creates
> accounting systems, will ever need to write a heap sort algorithm.

Oh! "It" is a heap sort algorithm.

> One
> question was, do people gain anything by pursuing an advanced degree in
> computer science? And I don't think this helps for creating many real-world
> business applications.

Indeed.  And should he need a sorted heap, the .NET class bag can
provide it for him.  He can copy/paste the sample of its use from the
docs and change variable names until the compiler stops complaining.
Voila le heap!

By the same logic, the grocery store clerk in the Modern World of
Today need not learn arithmetic; he need only know how to recognize
and punch in the digits of the serial number in case the magic wand
doesn't work.

And thus the grocery bagger needs not to know the principles of
physics.  He needs only a list of what doesn't go on top of what.  A
long list, yes, but the human mind is capable of such things when
needed. But there will inevitably be some lazy, surly bagger who knows
a little logic and will wonder if there be any principle by which he
might deduce what should go on what and avoid memorizing that list.
And should he develop these bad habits of looking for principles and
deducing, he may wonder if there is some principle from which his
teachers and bosses taught him that list rather than the laws of
physics.  He may decide to start his own damned grocery store.  He
will then not be at all a good grocery bagger, thus proving that
teaching deduction and principles is unnecessary, indeed counter-
productive, in the Modern World of Today.

If programming had never done anything for my mind, but only made me
"productive", I should have dropped it long ago.

God bless,

Tim S
From: Numeromancer
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <MZF2i.374$C96.328@newssvr23.news.prodigy.net>
Numeromancer wrote:
> Frank Buss wrote:
>> numeromancer wrote:
>>
>>>   The advanced [ETS] placement course in computer science includes
>>> such topics as   recursion, operations on stacks, lists, and trees,
>>> and the heap sort. These are complicated, machine-independent
>>> abstractions that are not learned while sitting at a terminal. They
>>> are learned by hearing competent lectures, studying a textbook, and by
>>> sitting alone gleaning insights from drawing diagrams and walking
>>> through prospective codes.
>> Ok, but do you need it?
> 
> What is "it"?
> 
>> I doubt that a Visual Basic programmer, who creates
>> accounting systems, will ever need to write a heap sort algorithm.
> 
> Oh! "It" is a heap sort algorithm.
> 
>> One
>> question was, do people gain anything by pursuing an advanced degree in
>> computer science? And I don't think this helps for creating many real-world
>> business applications.
> 
> Indeed.  And should he need a sorted heap, the .NET class bag can
> provide it for him.  He can copy/paste the sample of its use from the
> docs and change variable names until the compiler stops complaining.
> Voila le heap!
> 
> By the same logic, the grocery store clerk in the Modern World of
> Today need not learn arithmetic; he need only know how to recognize
> and punch in the digits of the serial number in case the magic wand
> doesn't work.
> 
> And thus the grocery bagger needs not to know the principles of
> physics.  He needs only a list of what doesn't go on top of what.  A
> long list, yes, but the human mind is capable of such things when
> needed. But there will inevitably be some lazy, surly bagger who knows
> a little logic and will wonder if there be any principle by which he
> might deduce what should go on what and avoid memorizing that list.
> And should he develop these bad habits of looking for principles and
> deducing, he may wonder if there is some principle from which his
> teachers and bosses taught him that list rather than the laws of
> physics.  He may decide to start his own damned grocery store.  He
> will then not be at all a good grocery bagger, thus proving that
> teaching deduction and principles is unnecessary, indeed counter-
> productive, in the Modern World of Today.
> 
> If programming had never done anything for my mind, but only made me
> "productive", I should have dropped it long ago.


(Trying to stretch one foot back onto the main trail:)

... and that goes for Lisp, too!


(Ok, my leg wouldn't reach, so I just threw my shoe.)

> 
> God bless,
> 
> Tim S
> 
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179302104.626719.54630@q23g2000hsg.googlegroups.com>
On May 15, 2:20 am, Joe Marshall <··········@gmail.com> wrote:
> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
>
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
>
> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?

I have a bachelor in economics ,(financial management) and beside some
Basic & Pascal at high school I'm self-thought programmer. Compared
with CS gratuates I'm better than many of them in programming but
completely lack in many other fields ,like networking for example.
Universities  tend to teach you a very broad curriculum so you end up
being not good at any of those, unless you put effort yourself. The
comparasion with economics goes like this. Graduate in accounting
won't stand a chance against a high school economist who works
accounting.At first,  but if graduate  is ready to spent same time
specializing in that subject he'll be better than those with high-
schools ceteris paribus.To answer your question , it's possible to
learn on yourself  but having that diploma means something in the
outside world. From my own experience with recruiters the situation of
valuating your kills is idiotic. They  won't see your projects, won't
let you write some code or if they do all you get is pen & paper
programming . Beside you need a net of people who share common
ineterest to keep you up to date and motivated. If you don't get a
friends from university find some other or you'll sunk  .One man is an
island
From: wooks
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179340602.242509.7520@o5g2000hsb.googlegroups.com>
On May 15, 1:20 am, Joe Marshall <··········@gmail.com> wrote:
> This is clearly flamebait, so kill this thread if you aren't
> interested.  I'm interested in what the consensus is.
>
> Some of the people in this group have, or are pursuing, advanced
> degrees in computer science.  Some have bachelor's degrees.  Some have
> degrees in related fields.  Some have degrees in completely unrelated
> fields.  Some have dropped out before getting a degree.  Some are
> autodidacts.
>
> Is there a correlation between studying computer science and knowing
> about computers?  Do people gain anything by pursuing an advanced
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?  There is a romantic
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

As to the question in the title - the answer is yes. Where else do you
have a chance of learning about the Theory of Computation/
Computational Complexity or Proofs of Program Correctness and such
like.

As to the question that most seem to be addressing, which narrows CS
down to programming - it may have nothing to do with your schooling/
lack of.

http://www.cs.kent.ac.uk/news/2006/RBornat/

http://www.cs.kent.ac.uk/dept_info/seminars/2005_06/abs_2006_01_24.html

which includes a link to the paper.
From: fireblade
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179387220.200519.295940@q23g2000hsg.googlegroups.com>
On May 16, 8:36 pm, wooks <······@hotmail.com> wrote:
> On May 15, 1:20 am, Joe Marshall <··········@gmail.com> wrote:
>
> > This is clearly flamebait, so kill this thread if you aren't
> > interested.  I'm interested in what the consensus is.
>
> > Some of the people in this group have, or are pursuing, advanced
> > degrees in computer science.  Some have bachelor's degrees.  Some have
> > degrees in related fields.  Some have degrees in completely unrelated
> > fields.  Some have dropped out before getting a degree.  Some are
> > autodidacts.
>
> > Is there a correlation between studying computer science and knowing
> > about computers?  Do people gain anything by pursuing an advanced
> > degree in computer science, or would they be as well served by saving
> > the money, buying a PC, and teaching themselves?  There is a romantic
> > ideal of the untutored hacker that program circles around MIT grad
> > students.  Is that absurd or commonplace?
>
> As to the question in the title - the answer is yes. Where else do you
> have a chance of learning about the Theory of Computation/
> Computational Complexity or Proofs of Program Correctness and such
> like.
>
> As to the question that most seem to be addressing, which narrows CS
> down to programming - it may have nothing to do with your schooling/
> lack of.

  http://www.cs.kent.ac.uk/news/2006/RBornat/
Richard Bornat, Professor of Computer Programming at the University of
Middlesex, gave an interesting and at times contraversial seminar
entitled Dividing the Sheep from the Goats in which he claimed that
the population fell into two categories: those who had an  for
computer programming and those who had not.

Actually there's 10 types of people , those who understand binary and
those who not.
The rest of the text us a rubbish IMHO there's no lack of aptitude but
lack of interest. If a 50 year old lady who never even used computer
managed to learn some scripting to generate customized reports and
make her job easier anybody  who is not complete idiot could do it,
providing he/she is ready to put enough effort on it. I have a story
of my own regarding playing musica field  where you definately need
talent to do it. But talent is only 1% the rest 99% are hard work.
Most of people in any field aren't interested in being a hackers (1)
they just want do get good grade , hefty salary check or whatever.
Exceling in their field is not in their interest. However there's one
strong force that makes people learn things and become good at : meet
her majesty Necessity ,  the mother of invention (2). A professional
who spent a lot of years working in that field is likely to met a lot
of problems he need to overcome . Those things made him good at what
he does, or  break him.



(1)
As defined in wikipedia http://en.wikipedia.org/wiki/Hacker
In other technical fields, hacker is extended to mean a person who
makes things work beyond perceived limits through their own technical
skill, such as a hardware hacker, or reality hacker.

(2)
http://www.bartleby.com/59/3/necessityist.html
Necessity is the mother of invention

A need or problem encourages creative efforts to meet the need or
solve the problem. This saying appears in the dialogue Republic, by
the ancient Greek philosopher Plato.
From: Charlton Wilbur
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <87bqgjh6ct.fsf@mithril.chromatico.net>
>>>>> "JM" == Joe Marshall <··········@gmail.com> writes:

    JM> Is there a correlation between studying computer science and
    JM> knowing about computers?  Do people gain anything by pursuing
    JM> an advanced degree in computer science, or would they be as
    JM> well served by saving the money, buying a PC, and teaching
    JM> themselves?  There is a romantic ideal of the untutored hacker
    JM> that program circles around MIT grad students.  Is that absurd
    JM> or commonplace?

To be a good programmer, you need to have a healthy dose of theory and
a healthy dose of practical experience.  The theory is most easily
acquired by formal education; the practical experience is most easily
acquired by doing it, and then reflecting on what went right and wrong.

The people celebrating the untutored hacker are mostly untutored
hackers themselves; it's part of the mythology that lets them claim
they're just as good as those college-educated people even in the face
of contrary evidence.  But for the most part they're missing huge
chunks of theory that could save them a lot of time; I worked with one
audodidact who spent three months (and three months of the salary his
employer was paying him) poorly reinventing depth-first search as a
solution to a fairly simple optimization problem.  Two years of a good
computer science degree program would have let him do the same thing
in under a week; he could have learned it on his own as well, of
course, but data structures more complex than arrays fell into one of
those Rumsfeldian areas: things that he didn't know he didn't know.

At the same time, though, the theory is insufficient.  No amount of
algorithmic analysis will teach you about the virtue of writing clear
code as well as having to read bad code that you wrote six months ago.
No amount of proving algorithms correct will help you track down a
pesky bug that happens because of an undocumented misfeature in the C
implementation you're using.  No amount of schooling will prepare you
to write programs for users who will swear up and down that they want
the program to work a certain way, but then complain when it's done
that you gave them what they asked for instead of what they wanted.

Charlton



-- 
Charlton Wilbur
·······@chromatico.net
From: Jon Harrop
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <46534745$0$8755$ed2619ec@ptn-nntp-reader02.plus.net>
Joe Marshall wrote:
> Is there a correlation between studying computer science and knowing
> about computers?

Yes. People who know about computers go on and choose to study computer
science, so there is a very strong correlation.

> Do people gain anything by pursuing an advanced 
> degree in computer science, or would they be as well served by saving
> the money, buying a PC, and teaching themselves?

People gain a lot by persuing a degree but half of what they gain is not
knowledge or expertise in their chosen field but, rather, an understanding
of how academia functions, an appreciation for people who devote their
lives to a subject and first-hand experience of writing serious literature
(papers and theses).

> There is a romantic 
> ideal of the untutored hacker that program circles around MIT grad
> students.  Is that absurd or commonplace?

Commonplace. The fact is, most programmers hackers are not computer
scientists.

-- 
Dr Jon D Harrop, Flying Frog Consultancy
The F#.NET Journal
http://www.ffconsultancy.com/products/fsharp_journal/?usenet
From: Ken Tilton
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <6kL4i.6817$XU7.2322@newsfe12.lga>
Jon Harrop wrote:
> Joe Marshall wrote:
> 
>>Is there a correlation between studying computer science and knowing
>>about computers?
> 
> 
> Yes. People who know about computers go on and choose to study computer
> science, so there is a very strong correlation.

Ah, flushed from his nest the rat seeks a new thread. Priceless.

Sorry, the rules of the game are that you may neither run nor hide. You 
have to deal with His Kennyness. The neat thing is that this works like 
the hard to defeat Prisoner's Dilemma champ: you act nice, we act nice.

Would that be so bad?

You might consider that the forum you thought would be such easy prey 
has you word-wrangling all hours of the night with people who you will 
never win over. Maybe /you/ picked the wrong language. Gasp. Anyway, you 
are so spinning your wheels over here, a monkey unable to get his hand 
from the jar because he will not release the prize. Let's see you mix 
/that/ metaphor. I digress, and the American Idol finale approaches!

kenny
From: Daniel Barlow
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179879244.16031.1@proxy02.news.clara.net>
Ken Tilton wrote:
>  The neat thing is that this works like 
> the hard to defeat Prisoner's Dilemma champ

Neat.  Can we chase him through Portmerion and then squash him with a 
giant rubber ball?

Oh, wait, wrong Prisoner ...


-dan
From: Ken Tilton
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <Z2M4i.6819$XU7.5475@newsfe12.lga>
Daniel Barlow wrote:
> Ken Tilton wrote:
> 
>>  The neat thing is that this works like the hard to defeat Prisoner's 
>> Dilemma champ
> 
> 
> Neat.  Can we chase him through Portmerion and then squash him with a 
> giant rubber ball?
> 
> Oh, wait, wrong Prisoner ...

The good news being Lisp is a multi-prisoner language.

Bring on the ball!

kenny
From: Joe Marshall
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <1179891734.167034.216120@w5g2000hsg.googlegroups.com>
On May 22, 5:39 pm, Ken Tilton <···········@optonline.net> wrote:

>
> The good news being Lisp is a multi-prisoner language.
>
> Bring on the ball!
>

But, but, who is number 2?

If you want information, you've come to the wrong place.
From: Ken Tilton
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <I4Q4i.71$Lk4.11@newsfe12.lga>
Joe Marshall wrote:
> On May 22, 5:39 pm, Ken Tilton <···········@optonline.net> wrote:
> 
> 
>>The good news being Lisp is a multi-prisoner language.
>>
>>Bring on the ball!
>>
> 
> 
> But, but, who is number 2?
> 
> If you want information,..

Bullsh*t. I am male, I want sex.

> ...you've come to the wrong place.

Word.

kt

ps. wtf happened to harrop? I was just warming up. k

-- 
http://www.theoryyalgebra.com/

"Algebra is the metaphysics of arithmetic." - John Ray

"As long as algebra is taught in school,
there will be prayer in school." - Cokie Roberts

"Stand firm in your refusal to remain conscious during algebra."
    - Fran Lebowitz

"I'm an algebra liar. I figure two good lies make a positive."
    - Tim Allen
From: Rainer Joswig
Subject: Re: Can you learn computer science from a school?
Date: 
Message-ID: <joswig-7E2706.10372223052007@news-europe.giganews.com>
In article <···············@newsfe12.lga>,
 Ken Tilton <···········@optonline.net> wrote:

> Joe Marshall wrote:
> > On May 22, 5:39 pm, Ken Tilton <···········@optonline.net> wrote:
> > 
> > 
> >>The good news being Lisp is a multi-prisoner language.
> >>
> >>Bring on the ball!
> >>
> > 
> > 
> > But, but, who is number 2?
> > 
> > If you want information,..
> 
> Bullsh*t. I am male, I want sex.
> 
> > ...you've come to the wrong place.
> 
> Word.
> 
> kt
> 
> ps. wtf happened to harrop? I was just warming up. k

I think he is busy trolling in comp.lang.c++ 

;-)

-- 
http://lispm.dyndns.org