Edsger W. Dijkstra (1930–2002)

Dutch computer scientist. Won the Turing Award in 1972 for “fundamental contributions to programming as a high, intellectual challenge.” Famous for his sharp opinions, his refusal to use a computer to write his papers (the “EWDs” are handwritten manuscripts), and a long line of work that pushed programming toward being a mathematical discipline.

Relevance to CS 421

  • Predicate transformers and the weakest-precondition calculus — Dijkstra reframed program correctness as computing a precondition from a postcondition, rather than guessing and checking.
  • Guarded commands — a small imperative language in which statements may fail, and the language is explicitly nondeterministic. We use the spirit of this when we talk about Hoare Semantics.
  • Structured programming — the argument that goto makes programs hard to reason about because it breaks the correspondence between program text and program execution.

Why I think he matters here

Dijkstra is the strongest voice for the idea that programs are mathematical objects, and programming is a discipline of reasoning, not of typing. Most of what we do in the back half of the course — types, semantics, proof rules — only makes sense if you take that idea seriously.

Further reading

  • The EWD archive — every manuscript he ever wrote, scanned. Start with EWD 1036 (“On the cruelty of really teaching computing science”) for flavor.
  • Go To Statement Considered Harmful (1968) — three pages, very readable.
  • A Discipline of Programming (1976) — the book-length treatment of the weakest-precondition calculus.