Notes on Structured Programming

By Edsger Dijkstra · 1969

An account of how structured program design, mathematical reasoning and progressive refinement can make software easier to understand, verify and modify.

Form
Technical report
Genre
Technical writing
Date
August 1969
Editions
Notes on Structured Programming was first published in August 1969, followed by a second edition in April 1970.
External link

Dijkstra examines how to build programs that remain understandable and reliable as they grow. He argues that testing alone cannot establish correctness and that program structure should support mathematical reasoning. The starting point is the limited human capacity to follow complex computations.

Using worked examples, including a program for generating prime numbers, he develops solutions through successive refinements. Abstraction allows programmers to separate what an operation must achieve from how it is implemented. He explains how sequences, conditional choices and loops can make the relationship between program text and execution easier to understand.

The notes also consider families of related programs, data representation and trade-offs between storage and speed. Dijkstra argues that structure should accommodate future changes, not merely satisfy an immediate task. Efficiency remains important, but improvements should preserve clarity and manageability. Programming is presented as the disciplined organisation of complexity.

Quotes

✓Copied