đź“š A curated list of papers for Software Engineers
A curated list of papers that may be of interest to Software Engineering students or professionals. See the sources and selection criteria below.
Von Neumann's First Computer Program. Knuth (1970).
Computer History; Early Programming
Computing Machinery and Intelligence. Turing (1950).
Early Artificial Intelligence
A Method for the Construction of Minimum-Redundancy Codes. Huffman (1952).
Information Theory
Engineering a Sort Function. Bentley, McIlroy (1993).
Data Structures; Algorithms
A Design Methodology for Reliable Software Systems. Liskov (1972).
Software Design
Programming with Abstract Data Types. Liskov, Zilles (1974).
Abstract Data Types; Object-Oriented Programming
Why Functional Programming Matters. Hughes (1990).
Functional Programming
An Incremental Approach to Compiler Construction. Ghuloum (2006).
Language Design; Compilers
No Silver Bullet: Essence and Accidents of Software Engineering. Brooks (1987).
Software Engineering; Project Management
Communicating sequential processes. Hoare (1978).
Concurrency
The UNIX Time- Sharing System. Ritchie, Thompson (1974).
Operating Systems
A Relational Model of Data for Large Shared Data Banks. Codd (1970).
Databases
A Protocol for Packet Network Intercommunication. Cerf, Kahn (1974).
Networking
New Directions in Cryptography. Diffie, Hellman (1976).
Cryptography
Time, Clocks, and the Ordering of Events in a Distributed System. Lamport (1978).
Distributed Systems
Designing for Usability: Key Principles and What Designers Think. Gould, Lewis (1985).
Human-Computer Interaction; User Interfaces
The anatomy of a large-scale hypertextual Web search engine. Brin, Page (1998).
Information Retrieval; World-Wide Web
Dynamo, Amazon’s Highly Available Key-value store. DeCandia et al (2007).
Internet Scale Data Systems
On Designing and Deploying Internet Scale Services. Hamilton (2007).
Operations; Reliability; Fault-tolerance
Thinking Methodically about Performance. Gregg (2012).
Performance
Bitcoin, A peer-to-peer electronic cash system. Nakamoto (2008).
Crytpocurrencies
A Few Useful Things to Know About Machine Learning. Domingos (2012).
Machine Learning
This list was inspired by (and draws from) several books and paper collections:
A few interesting resources about reading papers from Papers We Love and elsewhere: