3
$\begingroup$

That's EWD 1036. What does he mean by "really teaching"? And also, what is the cruelty implied in "really teaching" it?

The title is a bit obscure after you read his paper. Such a title can mean many obvious things, but I was expecting to get a clear explanation for the title---I failed to do it. We read the paper, and it's not clear precisely what he meant. I think it's Dijkstra's style not to offend the reader's intelligence, but at the same time, I'm obsessed with clarity, so I'm interested in finding out what was on his mind.

"Teaching" could mean teaching it for real, teaching it with competence and excellence. Now, why would there be any cruelty in such a qualification? Could it be something silly to put students through a lot of arduous work? In other words, I don't get it. It's not clear to me what he meant. Could it be that "really teaching" would put teachers through a lot of arduous work? (It's evident in the paper that the whole body of his colleagues does not share his ideas.)

By the way, don't get me wrong- the paper is excellent.

$\endgroup$
4
  • 1
    $\begingroup$ The theme is pretty clear - there will be great pain in upending the students preconceptions which will be necessary. Such cruelty is required for them to actually learn. $\endgroup$
    – Jon Custer
    Commented May 25 at 14:27
  • 1
    $\begingroup$ If you say so... Thank you so much! $\endgroup$
    – user21157
    Commented May 25 at 21:50
  • 1
    $\begingroup$ Dijkstra's paper and contemporary responses to it can be read in the Debate on teaching CS. The "cruelty" apparently refers to coping with "disturbing radical novelty" of CS that requires a break with tradition and habits, "not a very popular activity for it requires hard work." And "really teaching" to "if we are to have a high level of confidence in the software systems we develop, then formal methods will have a central role in their development, and our teaching of programming should support this view from the start." $\endgroup$
    – Conifold
    Commented May 26 at 6:14
  • 1
    $\begingroup$ Thanks so very much! I'm still finding the choice of words strange, but let me read the debate as I believe a lot will clear up. I'll report back what I find. Thanks so very much! $\endgroup$
    – user21157
    Commented Jun 2 at 23:49

1 Answer 1

2
$\begingroup$

There is little doubt that the article is a continuation of the well-known long-standing debate about proofs of correctness in programming, program verification, theoretical precision, formalism and related topics.

Dijkstra was a big life-long proponent this approach. See Hoare's memorial lecture (2010).

This is discursively placed in opposition to practical software engineering, applied computer science, where proofs might be replaced with testing.

Early on it was held that large programs could never work because the amount of errors would be unmanageable, hence the only rescue is to formally prove correctness for software to work at scale. Early on Hoare advocated that position, but he later changed his mind (after Dijkstra's article in question see Hoare (1996), and in fact other computer scientists further argued that it is neither practical to prove everything, while arguing that it has borne out that large programs actually do work without being fully formally proven.

A paper by DeMillo, Lipton, and Perlis (1979) is probably the most famous example of that argument. Dijkstra not only disagreed but disagreed with quite some vehemence. (For some more current comments by DeMillo and Lipton and others see Gasarch (2021).

The article in question is ten years later, now even larger software systems are in use, while not proven correct, yet Dijkstra advocates for the formal, highly theoretic, and proof-centric approach in pedagogy. Dijkstra knows this is controversial, and the commentaries by his peers confirms this. They do know Dijkstra and his position as well. I believe there is a decent chance that mention of cruelty are as much if not more directed at his peers as the imagined CS student. And the wording of "really teaching" is a dig at his peers doing it wrong, according to Dijkstra. Dijkstra is a highly esteemed computer scientist and Turing award winner. But it's noteworthy that the same or similar can be said about numerous of his respondents. So he is really arguing that colleagues at premiere computer science programs such as Berkeley, Stanford, CMU and others are not teaching CS correctly. It's easily understandable that this is a way to have that kind of a discussion that leads to controversy.

See for example this paragraph from Dijkstra's argument:

In the same vein, I must draw attention to the astonishing readiness with which the suggestion has been accepted that the pains of software production are largely due to a lack of appropriate “programming tools.” (The telling “programmer’s workbench” was soon to follow.) Again, the shallowness of the underlying analogy is worthy of the Middle Ages. Confrontations with insipid “tools” of the “algorithm-animation” variety has not mellowed my judgement; on the contrary, it has confirmed my initial suspicion that we are primarily dealing with yet another dimension of the snake-oil business.

$\endgroup$
1
  • 1
    $\begingroup$ Now I can really see the choice of words. I did not have all the context that the answer presents. Thanks so very much. $\endgroup$
    – user21157
    Commented Jun 28 at 12:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.