Last changed 14 Jan 2019 ............... Length about 500 words (7,000 bytes).
(Document started on 7 Oct 2018.) This is a WWW document maintained by Steve Draper, installed at You may copy it. How to refer to it.

Web site logical path: [] [~steve] [educ] [this page] [Dijkstra's paper] [notes on it] [triad3] [triad4]
Other related pages: [Home] [My Educ. ref list] [Other talks by me]
Some other CCSE talks: [Fail/succeed] [Play, ethics, morality] [Active Learning]

Pure programming teaching – Dijkstra's paper on this

Title: Pure programming teaching – Dijkstra's paper on this
Or: Teaching pure programming with pencil and paper only
When and where: 1pm, Monday 14th January 2019, room SAWB 423 (computing science)
Occasion: CCSE reading group     (Events listing)


Steve Draper,   School of Psychology,   University of Glasgow.

Slides: PDF
Handout: PDF file

Audio recording: No recording: a discussion, not one person with a mike. mp2 file
Related material:


The central business of this session is a discussion, led by Steve Draper, on E.W.Dijkstra's paper "On the cruelty of really teaching computing science". This is about both computing, programming and computing science, and also about education in relation to these. In other words, this paper is about BOTH computing science AND education; (and the session's title phrase "Pure programming teaching" is deliberately ambiguous between how to teach a pure version of programming, and how to teach the nature of programming in a pure, educationally optimal way).

The issue with this paper is that it is closely and well argued, but proposes many conclusions that few if any will agree with. But we should, if we want to deny any of his conclusions, be able to come up with arguments not just rejection. For example, he argues (and carried out in his own course): "the programming language in question has not been implemented on campus so that students are protected from the temptation to test their programs".

It is therefore desirable that:

Sources for Dijkstra's paper
"On the cruelty of really teaching computing science"

A very slightly modified version was published in CACM (1989), along with invited commentaries from four distinguished researchers:

I have on-line a transcription of his original hand-written version, plus inserted section and sub-section titles which help me, at least, to see the careful structure and logic of his paper.
Dijkstra's paper   EWD1036 (1988)

See also: Tony Jenkins (2002) "On the Difficulty of Learning to Program"

Relevance and contexts

This session connects back to the Thinkathon: where those teaching level 1 programming remain convinced that the best assessment has as a large part, the ability to write and understand code with no online help of any kind: on paper. The Dijkstra paper argues for a strong version of this.

It connects sideways with John O'Donnell's views which, if I understand them, require students to learn thoroughly the semantics of a programming language by understanding how exactly it translates into Assembler / machine code; and thence to physical operations performed by an electronic machine. This (it seems to me) is pure, but a quite different kind of pure.

In the last 10 mins (stopping the discussion of the Dijkstra paper, showing 1 slide, then soliciting reactions from each person): I plan to raise the argument that the programming course should be redesigned to have a whole new section on "bug-fixing", entirely separated from the language taught BUT treating this a separate skill. Accepting Dijkstra's argument; but concluding that an additional skill needs to be recognised and taught academically.