Lecture Notes by Anthony Zhang.

\[ \newcommand{\set}[1]{\left\{ #1 \right\}} \newcommand{\tup}[1]{\left\langle #1 \right\rangle} \newcommand{\abs}[1]{\left\lvert #1 \right\rvert} \newcommand{\floor}[1]{\left\lfloor #1 \right\rfloor} \newcommand{\ceil}[1]{\left\lceil#1 \right\rceil} \newcommand{\mb}[1]{\mathbb{#1}} \newcommand{\rem}{\operatorname{rem}} \newcommand{\sign}{\operatorname{sign}} \newcommand{\imag}{\boldsymbol{i}} \newcommand{\dee}{\mathop{}\!\mathrm{d}} \newcommand{\lH}{\overset{\text{l'H}}{=}} \newcommand{\evalat}[1]{\left.\left(#1\right)\right|} \newcommand{\sech}{\operatorname{sech}} \newcommand{\spn}{\operatorname{Span}} \newcommand{\proj}{\operatorname{proj}} \newcommand{\prp}{\operatorname{perp}} \newcommand{\refl}{\operatorname{refl}} \newcommand{\magn}[1]{\left\lVert #1 \right\rVert} \newcommand{\rank}{\operatorname{rank}} \newcommand{\sys}[2]{\left[ #1 \mid #2\hskip2pt \right]} \newcommand{\range}{\operatorname{Range}} \newcommand{\adj}{\operatorname{adj}} \newcommand{\cof}{\operatorname{cof}} \newcommand{\diag}{\operatorname{diag}} \newcommand{\formlp}{\operatorname{Form}(\mathcal{L}^P)} \]


Distributed Systems.

Khuzaima Daudjee
Section 001 (technically section 2 somehow, but it shows up as section 1 on Quest)
Website: https://cs.uwaterloo.ca/~kdaudjee/courses/cs454/
Tuesdays/Thursdays 10:00am

NOTE: The professor asked the class not to share any notes for this course, so this document just contains summaries of the topics covered in each lecture, as well as any additional resources I acquire outside of the course. That said, if you'd like a specific thing explained, I'm likely to give it a try if you .


Lecture summary: course administrative information, what a distributed system is exactly, ten common fallacies of distributed systems.

Course has 4 assignments (worth 50%), no midterms, and one final (worth 50%). Textbook "Distributed Systems: Principles and Paradigms (2nd edition)" is freely available online from the publisher (download page), though it's not strictly required.

After an assignment deadline, there is a 48 hour grace period afterwards in which instructors won't answer questions on Piazza, but you can still submit your assignment with no penalty.


Lecture summary: desirable properties of distributed systems. Eight different types of transparency in distributed systems, why they're useful, and when they're applicable. Scalability in distributed systems, with examples from real-world systems.


Lecture summary: distributed system architectures (client-server, multitier, etc.), concurrency, NUMA, operating system support for distributed systems (distributed operating systems, networked operating systems).


Lecture summary: horizontal/vertical scaling (but not the kind you're thinking of!), multitier architectures and their benefits/drawbacks, peer-to-peer distributed systems and their structure (tree, DAG, benefits/drawbacks of different approaches).


Lecture summary: parallelism (intra-process, inter-process), QoS, using parallelism to build robust distributed systems, issues with making arbitrary programs parallel, introduction to computer network architecture.


Lecture summary: continuation of network architectures, network concepts (circuit-switched, packet-switched), latency/bandwidth, OSI 7 layer model overview.


Lecture summary: different ways to implement IPC (RPC, RMI, message passing), RPC failure modes, how implementations of RPC work (probably useful for assignment 3), considerations when using RPC in distributed systems.


;wip: missed due to interviews


Lecture summary: name/directory services and different architectures commonly used for them, and how they're implemented, case study with DNS, considerations when designing name/directory services, case study with LDAP/X.500.

Creative Commons License This work by Anthony Zhang is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Copyright 2013-2017 Anthony Zhang.