Classic Papers
Object-Oriented Programming
- Daniel H. H. Ingalls. The Smalltalk-76 Programming System Design and Implementation. Proc. Principles of Programming Languages, 1978.
- Alan C. Kay. The Early History of Smalltalk. Proc. History of Programming Languages, 1993.
- David Ungar and Randall Smith. Self: the Power of Simplicity. Proc. Object-Oriented Programming, Systems, Languages, and Applications, 1987.
- Peter Canning, William Cook, Walter Hill, Walter Olthoff, and John C. Mitchell. F-Bounded Polymorphism for Object-Oriented Programming. Proc. Functional Programming Languages and Computer Architecture, 1989.
- Eric Ernst. Family Polymorphism. Proc. European Conference on Object-Oriented Programming, 2002.
- William R. Cook. On Understanding Data Abstraction, Revisited. Onward! Essay, 2009. This is a (very!) recent paper, not a traditional classic, but it is the best summary I know of what makes objects unique.
Aspect-Oriented Programming
- Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-Oriented Programming. Proc. European Conference on Object-Oriented Programming, 1997.
Typestate
- Robert E Strom and Shaula Yemini. Typestate: A Programming Language Concept for Enhancing Software Reliability. IEEE Transactions on Software Engineering 12(1):157-171, 1986. Note: this paper is a very important contribution to the literature, but is unavailable in IEEE's electronic library, so I've made a scanned copy available here for academic use. Please notify me if it because available at IEEE and I will link to that instead.