Epidemic algorithms for replicated database maintenance
Paxos made simple
Bitcoin: A Peer-to-Peer Electronic Cash System
End-to-end arguments in system design
The Design and Implementation of a Log-Structured File System
On the duality of operating system structures
Exokernel: an operating system architecture for application-level resource management
Xen and the Art of Virtualization
Running Commodity Operating Systems on Scalable Multiprocessors
The Google file system
Spanner: Google's Globally Distributed Database
MapReduce: Simplified Data Processing on Large Clusters
Time, Clocks, and the Ordering of Events in a Distributed System
Distributed snapshots: determining global states of distributed systems
Implementing fault-tolerant services using the state machine approach: A tutorial
Chain replication for high throughput and availability
Impossibility of Distributed Consensus with One Faulty Process
Chord: A scalable peer-to-peer lookup service for internet applications
Dynamo: Amazon's Highly Available Key-Value Store
Congestion Avoidance and Control
seL4: formal verification of an OS kernel
An Analysis of Linux Scalability to Many Cores
The Multikernel: A new OS architecture for scalable multicore systems
Capriccio: Scalable Threads for Internet Services
The benefits and costs of writing a POSIX kernel in a high-level language
Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center
Apache Spark: A Unified Engine for Big Data Processing
Pregel: A System for Large-Scale Graph Processing
TensorFlow: A System for Large-Scale Machine Learning
Serverless Computation with OpenLambda
Occupy the Cloud: Distributed Computing for the 99%
Arrakis: The Operating System is the Control Plane
OpenFlow: Enabling Innovation in Campus Networks
TaintDroid: An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones
Internet Time Synchronization: The Network Time Protocol
Textbooks
The course is mostly based on published papers. It also uses
a free textbook on concurrent and distributed programming: Concurrent Programming with Harmony by Robbert van Renesse.