Live data from Hacker News

Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

cs.utexas.edu

11–20 of 64 posts

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#11
post #7

I think people are attracted more to the form of the EWDs and to it's melancholic tone, rather than to the content itself, which is confirmed by the huge popularity of the EWDs as compared to "The discipline of programming", which is the technical exposition of what Dijkstra really is proposing in the EWDs. As almost all of Dijkstra's writing, this piece here is a plea for teaching formal methods. It's nicely written…

[deleted]

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#12
post #7

I think people are attracted more to the form of the EWDs and to it's melancholic tone, rather than to the content itself, which is confirmed by the huge popularity of the EWDs as compared to "The discipline of programming", which is the technical exposition of what Dijkstra really is proposing in the EWDs. As almost all of Dijkstra's writing, this piece here is a plea for teaching formal methods. It's nicely written…

But, however much you might bristle at his tone, he has something significant to say, and he's right when he says it.

You can't take this paper (or any other) as an end-all/be-all statement isolated in a vacuum. Maybe his smug tone portends that he might presume as much, but it's a mistake to take it as a one-size-fits all remark.

The thing he gets right is this:

Teaching students "Computer Science" as a new discipline by showing them how to reverse engineer existing examples is a mistake.

It's a mistake in the same sense that you don't teach math by giving students a number and asking them what the problem was. That's an absurd approach to math.

96.

Okay, now give me the equation.

That's the idea he's driving at. And in many ways he's right.

Does that mean that reverse engineering is a completely invalid approach to learning? No. For some disciplines, it is essential, and indeed, for certain aspects of electrical engineering, which ulimately melds with programming, one needs those sorts of strategies ready at hand.

But when it comes down to writing programs, he's cautioning that you should learn the task as a top-down approach, not by starting at the bottom, and then climbing up through someone else's ready-made tangle of spaghetti.

Does reverse engineering work for medicine and biology, or even chemistry? Well, what the hell kind of a choice did we have? Humanity had to bootstrap out of hunter/gatherer mode one way or another, but it doesn't mean we have to approach computer science the same way, and in fact, there's no rational reason to do so.

Read deeply enough into this message, and you'll unravel the mystery of why open source development is beneficial and generous, and proprietary closed source products really do represent a malign animosity toward the end user, by only providing the bald number as the result, and never teaching the man to fish. But hey, there's that old refrain: we all gotta eat right, so how do we make money when we're giving everything away and not rationing a portion for yourself?

Dijkstra comes from the era when computer scientists were a priesthood, moreso than tradesman. Computer science was esoteric, and so there was no fear of "teaching a slave to read" because there really weren't enough books to go around. Computers were high holy temples of time sharing cloistered atop the ivory tower. But in his message here, you'll gain insight into the fundamental truth, that when there are billions of cycles per second, acting on trillions of bytes at a time, there's no hope of brute force reverse engineering the resulting output of the system as a post mortem. Sometimes that's what we're stuck with, but it's not the ideal, and it's an impractical approach, not unlike picking up the pieces of an air disaster on a mountain top. Code needs to be well organized and properly conceived from the outset, and this is the desired approach, and a fundamental principle new students should have beaten into them, mercilessly.

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#15
post #4

This EWD is mind blowing in its beauty. It's 30 pages, but 30 pages that you won't regret reading. I love computer science and teaching it is some of the most fun I've ever had. With a lot of practice, you can get across concepts such as computability and turing machines to the non-mathematically initiated within the duration of a party, and it's greatly satisfying. (yes I am a lot of fun to be around) The rest of th…

I use fountain pens and paper to take notes in meetings all the time. I am trying to do more "thinking on paper", and I wouldn't give up the fountain pen for anything.

Keep at it!

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#17
I know Dijkstra's genius and all, but his papers are just so unpleasant. First, I hate his verbose style and second, I hate his attitude.

"The effort of using machines to mimic the human mind has always struck me as rather silly. I would rather use them to mimic something better."

Jesus, could he be any more smug?

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#19
post #9

Was this post inspired by this post ( http://www.reddit.com/r/compsci/comments/1rxfze/if_you_liked... ) on r/compsci by any chance? I didn't read much of the discussion there but the other links are interesting and things which I hadn't seen before.

I think it's the opposite, i.e. the reddit post was inspired by the paper, which I read yesterday... but I couldn't have found the link on HN, because it has only appeared today, so it must mean that I orginally found it on reddit. Now I'm confused...

Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]

#20
Who is Dijkstra to espouse about the best way of teaching mathematics to primary school children? I think it would be equivalent to a researcher in education deciding they know the best way to design a calculus.

The manner in which Dijkstra writes about this is very off-putting - it sounds arrogant and one-sided, dismissive. In fact he comes across as ignorant, which of course, he is, in this area.

Worryingly, I see a lot of similar writing in CS blogs. Often authors present as fact their opinions on a topic that they are not knowledgeable about.

When I read something like that, I look for the balance in their argument. If they say "well, what are the good sides to teaching by analogy? When does it work best? What is the evidence that teaching basic arithmetic is done well?" then I begin to take them seriously.

[edit: typo]

Post reply on HN