This file collates the material taught during lecture in an organized, chronological manner.
Lecture 1 (3/31)
Distributed Systems involve cheating, we don’t do anything natively/truly we fake it somehow.
Why do we do Distributed Systems?
- Increase performance and/or Capacity. Serve more demand than an individual machine can handle. (Scaling up): Basically because of Dennard Scaling (Moore’s Law).
- Fault Tolerance: If one machine fails, the system can continue to operate. (Scaling out), survive failure of individual components, “a Distributed System won’t work if some part of the system you didn’t know exists breaks”. More Probability of failure due to more components.
- Decrease latency somehow/access
- Regulations + Policies (Different regulatory environments have different requirements and data)
- Isolation/Security: Avoid doing our stuff locally Cloud Service (renting resources).
Lecture 2 (4/2)
- Definition (Memory Coherence)
- Definition (Strict Consistency Model)
- Definition (Shared Virtual Memory)
- Definition (Sequential Consistency)
Lecture 3 (4/7)
Lecture 4 (4/9)
Rust tutorial.
Lecture 5 (4/14)
Lecture 6 (4/21)
Lecture 7 (4/23)
Lecture 8 (4/28)
Lecture 9 (4/30)
- Midterm
Lecture 10 (5/5)
Lecture 11 (5/7)
Lecture 12 (5/12)
Lecture 13 (5/14)
Lecture 14 (5/19)
Lecture 15 (5/21)
Lecture 16 (5/26)
Lecture 17 (5/28)
Lecture 18 (6/2)
Lecture 19 (6/4)
Thanks to Samvrit for lending me his notes for the first few lectures.