Primary sources

This month the MIT press published Ideas That Created the Future: Classic Papers of Computer Science, which collects papers in computer science that map the evolution of the field.

I think everyone who studies computer science should read primary sources about innovations we now take for granted. Understanding how the state of the art evolved is the best way to understand why things are the way they are. You don’t have to know about history to work in the field, but I’ve found that knowing the “why” makes me a better practitioner.

Margaret Martonosi teaches a discussion-oriented class at Princeton called “Great Moments in Computing”, which focuses on these primary sources. Her syllabus includes some of the same material as Lewis’s book:

  • Foundations of Digital Logic ([Boole, 1854] [Shannon, 1938])
  • Artificial Intelligence ([Turing, 1950] [Searle, 1980])
  • Network Protocols ([Cerf and Kahn, 1974])
  • Ethernet ([Metcalfe and Boggs, 1976])
  • Early Architectures ([Burks et al., 1945] [Wilkes, 1965])
  • Computability ([Turing, 1936])
  • Virtual Memory ([Kilburn, 1962] [Daley and Dennis, 1968] [Anderson, 2014])
  • Human-Computer Interaction ([Sutherland, 1963])
  • UNIX ([Ritchie and Thompson, 1974])
  • RAID ([Patterson et al., 1988])
  • Invention of the Mouse ([Engelbart, 1970])
  • Machine Learning ([Rummelhart, 1986] [Valiant, 1984])
  • Compilers ([Hopper, 1952] [Backus et al., 1957])
  • Moore’s Law and its Future ([Moore, 1965] [Moore, 2003])
  • Crypto and Encryption ([Diffie and Hellman, 1976] [Rivest et al., 1978])
  • Data Abstraction ([Liskov et al., 1977] [Liskov, 1987])
  • Video Games: Past and Present ([Brand, 1972] [Graetz, 1981])
  • PageRank and MapReduce ([Page et al., 1998] [Dean and Ghemawat, 2004])
  • Event Ordering and Memory Consistency Models ([Lamport, 1978] [Lamport, 1979])
  • Quantum Computing (Shor’s Algorithm) ([Shor, 1997])
  • Personal Computing and Ubiquituous Computing ([Kay, 1972] [Weiser, 1993])
  • Back to the Future ([Bush, 1945])

The full bibliography is in the syllabus. It’s a good list. Wikipedia has its own list broken down by subject area, and there are other lists around the Internet.

My hypothetical list would have more papers from Turing Award winners (Dijkstra, Brooks, and Pearl come to mind), the golden ages of Xerox PARC and Bell Labs, the development of the Internet, and seminal papers in software engineering. Any one of those areas would provide more than enough material for a seminar – particularly software engineering, which has some of the richest literature in computer science, and could incorporate the History of Programming Languages proceedings.