"A discipline of programming" by Edsger W. Dijkstra
0. Executional Abstraction
1. The role of programming languages
2. States and their characterization
3. The characterization of semantics
4. The semantic characterization of a programming language
5. Two theorem
6. On the design of properly terminating constructs
7. Euclid's algorithm revisited
9. On nondeterminancy being bounded
10. An essay on the notion: "The scope of variables"
11. Array variables
12. The linear search theorem
13. The problem of the next permutation
14. The problem of the dutch national flag
15. updating a sequential file
16. merging problems revisited
17. An exercise attribute to R.W. Hamming
18. The pattern matching problem
19. Writing a number as the sum of two squares
20. the problem of the smallest prime factor of a large number
21. the problem of the most isolated villages
22. the problem of the shortest subspanning tree
23. REM's algorithm for the recording of Equivalence classes
24. the problem of the convex null in three dimensions
25. finding the maximal strong components in a directed graph
26. on manuals and implementations
27. in retrospect
Reference
predicate transformer