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…
Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]
11–20 of 64 posts
Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]
#12I 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…
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]
#13How can a human write that much good prose without scribbling things out?
Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]
#14Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]
#15This 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…
Keep at it!
Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]
#16How can a human write that much good prose without scribbling things out?
Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]
#17"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]
#18Interestingly, I found the handwriting to more readable than most computer fonts; that is, very visually consumable.
Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]
#19Was 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.
Re: Dijkstra: On the cruelty of really teaching computer science (1988) [pdf]
#20The 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]