CPSC 426/526: Building Distributed Systems, Fall 2017

Home  –  Schedule  –  Reference

We will learn the basics of building distributed systems from Lec 1 to Lec 10, including UseNet, P2P systems, content recommendation, firewalls and NATs, file and storage systems, and consensus. During this time, you need to implement a workable gossip messaging system and a workable point-to-point messaging system. Lec 11 - 14 cover topics about data security and privacy in distributed systems. You need to implement a workable P2P file sharing system in your third lab. Lec 15 - 20 cover topics about failures and reliability issues in distributed systems, and you need to build a workable system based on one of the systems you learn from our course.   LEC lecture topic
PREP lecture preparation homework
OUT lab assignment handed out
DUE lab assignment due date

aug 28
aug 29 aug 30
LEC 1: Course Introduction
aug 31 sep 1
LEC 2: UseNet and Gossip
PREP: I Remember USENET, RFC 1036
sep 4
Labor Day
sep 5 sep 6
LEC 3: Peer-to-Peer Lookup Service
PREP: Chord: A Scalable Peer-to-Peer Lookup Service for Internet Applications
OUT: Lab 1: Gossip Messaging
sep 7
sep 8
sep 11
LEC 4: Peer-to-Peer Lookup Service (Cont.)
PREP: Chord: A Scalable Peer-to-Peer Lookup Service for Internet Applications
sep 12 sep 13
LEC 5: Content Sharing and Reputation Systems
PREP: Experience with an Object Reputation System for Peer-to-Peer Filesharing
sep 14
sep 15
DUE: Lab 1 Bakeoff Version
sep 18
LEC 6: Attacks and Defense in Distributed Systems
PREP: The Sybil Attack
sep 19 sep 20
LEC 7: Firewalls, NATs and Distributed System Controls
PREP: Peer-to-Peer Communication Across NATs
sep 21 sep 22
DUE: Lab 1 Final Version
OUT: Lab 2: Point-to-Point Messaging
sep 25
Hacking Day
sep 26 sep 27
LEC 8: Cloud Computing and Storage
PREP: The Google File System
sep 28
sep 29
DUE: Lab 2 Bakeoff Version
oct 2
LEC 9: MapReduce and BigTable
PREP: MapReduce: Simplified Data Processing on Large Clusters
oct 3
oct 4
LEC 10: Replications and Consensus in Distributed Systems
PREP: Generalized Consensus and Paxos
oct 5
oct 6
DUE: Lab 2 Final Version
oct 9
LEC 11: Data Security and Privacy in Distributed Systems
PREP: CryptDB: Protecting Confidentiality with Encrypted Query Processing
[Group Presentation Slides]
oct 10 oct 11
LEC 12: Differential Privacy in Distributed Systems
PREP: DJoin: Differentially Private Join Queries over Distributed Databases
oct 12 oct 13
oct 16
Midterm Exam
oct 17 oct 18
October Recess
oct 19
oct 20
OUT: Lab 3: Search and File Sharing
OUT: Topics for Lab4
oct 23
LEC 13: Anonymous Reputation
PREP: AnonRep: Towards Tracking-Resistant Anonymous Reputation
oct 24 oct 25
LEC 14: Anonymous Communications in Distributed Systems
PREP: Dissent in Numbers: Making Strong Anonymity Scale
[Group Presentation Slides]
oct 26
oct 27
DUE: Lab 3 Bakeoff Version
oct 30
LEC 15: Failures in Distributed Systems
PREP: Simple Testing Can Prevent Most Critical Failures
[Group Presentation Slides]
oct 31 nov 1
LEC 16: Misconfiguration in Distributed Systems
PREP: Systems Approaches to Tackling Configuration Errors: A Survey
nov 2
nov 3
DUE: Lab 3 Final Version
nov 6
LEC 17: Correlated Failure Prevention
PREP: Heading Off Correlated Failures through Independence-as-a-Service
nov 7 nov 8
LEC 18: Accountability
PREP: PeerReview: Practical Accountability for Distributed Systems
nov 9
nov 10
DUE: Proposal for Lab 4
nov 13
LEC 19: Failure Diagnosis and Repair in Distributed Systems
PREP: The Good, the Bad, and the Differences: Better Network Diagnostics with Differential Provenance
[Group Presentation Slides]
nov 14
nov 15
LEC 20: Byzantine Fault Tolerance
PREP: Practical Byzantine Fault Tolerance
[Group Presentation Slides]
nov 16
nov 17
DUE: Lab 4 Specification
nov 20
November Recess
nov 21 nov 22
nov 23 nov 24
DUE: Lab 4 Bakeoff Version
nov 27
LEC 21: Blockchain and Bitcoin
PREP: Bitcoin: A Peer-to-Peer Electronic Cash System
nov 28
nov 29
Final Exam
nov 30
dec 1
dec 4
Lab 4 Presentation
DUE: Lab 4 Final Version
dec 5
dec 6
Lab 4 Presentation
dec 7
dec 8

Copyright (c) 2017-2018 Ennan Zhai, Department of Computer Science, Yale University