Here is the list of papers on computing which I consider the Golden Hall of Classics of Computer Science. We have already read most of these things in our textbooks and heard them on lectures. But I think it is still refreshing and broadening the mind to see the original publications that grounded many fields of CS. The text are not sorted in any way. The list is going to be updated and you are welcome to send the links to the texts you consider as important as those below.
A note about copyrights: while all these papers are freely available online (i.e. not pay-walled), I don’t store the files on my server. Following are only the links that point elsewhere.
An Axiomatic Basis for Computer Programming, C. A. R. HOARE, 1969.
While Mr. Hoare is well known for quite many things, including the QuickSort algorithm, this article is an excellent insight into the logical foundations of computer programming.
Predicate Dispatching: A Unied Theory of Dispatch, Michael Ernst, et al., 1998.
Describes a method for dispatching functions based not on a static set of rules, but instead as the traversal of a decision tree that could be built at compile-time and extended incrementally at runtime.
Cooperating sequential processes, E.W.Dijkstra, 1965
While Dijkctra’s is quite famous for many CS discoveries and sarcastic remarks, this article describes the methods of synchronization which gained much of importance with the growth of multi-threaded programming. The sheer weight of the heady topics assembled in one place is stunning to observe.
Fundamental Concepts in Programming Languages, Christopher Strachey, 1967
L-values, R-values, parameter passing, variable binding, functions as data, parametric polymorphism, ad hoc polymorphism… All these concepts are explained in this classical text with crystal clarity.
On Understanding Types, Data Abstraction, and Polymorphism, Luca Cardelli, Peter Wegner, 1985
An excellent article on the foundations of types theory and OOP.
Time, Clocks, and the Ordering o f Events in a Distributed System, Leslie Lamport, 1978
This paper presents a single-handed definitions of the two branches of study in distributed computing: the reasoning of event ordering in distributed systems and protocols, and the state machine approach to redundancy
Sketchpad: A Man-Machine Graphical Communication System, I. E. Sutheland, 1963
The pioneering work on computer graphics
To be updated…