What a program means
A subject the papers are about. The loosest grouping, and the one to reach for last.
Giving a program a meaning that is not whatever the implementation does. Each does it by translating the program into something already understood -- a function, a logic, a machine that is only rules, an algebra, a type -- and what they disagree about is which of those may be assumed.
Do not read this set in year order. Two of its most influential members are dated by publication rather than composition, and sorting by year puts them decades out of place. Strachey's *Fundamental Concepts in Programming Languages* is dated 2000 and is a course of lectures given at Copenhagen in **1967** -- it is where L-values and R-values are named and where parametric and ad hoc polymorphism are first distinguished, so a great deal of the vocabulary the rest of the set uses without attribution is fixed there. Plotkin's *A structural approach to operational semantics* is dated 2004 and is the Aarhus DAIMI FN-19 report of **1981**. Read as 2004 papers they look like retrospectives; they are foundations.
The approaches are all present in their original statements. Denotational: Scott, and Strachey. Operational: Plotkin, with Landin's abstract machine as the ancestor. Axiomatic: Hoare's proof of FIND, also in `the-program-and-its-proof`. Algebraic: Hagino's categorical programming language, an Edinburgh thesis of 1987 -- the set named the algebra case in its opening sentence and held no categorical account until this record was placed.
The types thread is the longest and contains a genuine three-author result. Hindley in 1969, Milner in 1978 and Damas and Milner in 1982 arrive at and complete principal type inference across thirteen years -- read together they are the clearest case in the corpus of a result assembled rather than announced. Reynolds, Cardelli and Wegner, Pierce's textbook and Wadler's propositions-as-types carry it forward; Moggi supplies effects; Liskov appears twice, the history and the behavioural-subtyping paper that named the principle.
At the edges: Backus arguing the whole framing is wrong and programming should be liberated from the von Neumann style, Ghica compiling a semantics into hardware, and Piedeleu on string diagrams as a way of drawing rather than writing the meaning.