When & Where
The first exam will be held in our regular classroom on Monday, February 23, 2026.
It will take up about half the lecture, starting approximately during the second half of the class period. Please arrive on time and do not plan on coming in just to take the exam. If you arrive after the exam has started, you will not be allowed to take it.
Exam rules
Be sure to arrive on time. If you arrive after the exam starts, you will not be allowed to take it.
This will be a closed book, closed notes exam. Calculators, phones, augmented reality glasses, laptops, and tablets are neither needed nor permitted. If you have these devices, you must turn them off, put them out of sight, and not access them for the duration of the exam.
No other electronic devices are permitted except for hearing aids, pacemakers, electronic nerve stimulators, other implanted medical devices, or electronic watches that function only as timekeeping devices or chronographs.
Bring a couple of pens or pencils with you.
Plan to use a pen only if you are supremely confident in not changing your mind about your answers. . Check here for information about pencils, sharpeners, and the craft of pencil sharpening.
Past exams
You can use my past exams as a guide to what this exam may look like. Some material has changed, so do not worry about questions that appear to relate to topics we have not covered. We covered topics I didn’t cover in past classes and removed some topics that seemed too detailed or are no longer relevant.
Expect around 25 multiple-choice questions. I do not refer to old exams when I come up with a new one, so it is likely that some of the topics that I considered important in past exams will show up on future exams.
Study guide
You are responsible for the material from the first four lectures and recitations.
The study guide is a concatenation of the study guides from the past lectures. It attempts to cover most of the material you should know. It is not a substitute for the lectures, lecture material, and other reading matter. All the material may not be in the guide. My goal is to put most of the information you need to know a concise with fewer elaborations.
You can also prepare your own guide, which would be a much better way to prepare for the exam!
Topics
Here is a list of topics you are expected to know for the exam. It is extensive, but it should be viewed as a coverage guide rather than a catalog of detailed algorithms or definitions to memorize.
Use it as a checklist. Go through each item and ask yourself whether you understand the concept and could recognize or apply it in context. If not, review the relevant notes.
Because the exam is multiple choice, your focus should be on understanding and being able to reason about the material, not on memorizing or reciting formal definitions.
Topics that you be familiar with and may be on the exam include:
Introduction & Key Concepts
-
Distributed system - definition
-
Single system image
-
Moore’s law
-
Vertical vs. horizontal scaling
-
Transparency goals
-
Nines of Availability (not the calculations)
-
Failure models
-
Partial failure
-
Single point of failure
-
Redundancy
-
Availability vs. reliability
-
Series vs. parallel failures (understand the impact but you don’t need to memorize the formulas)
-
-
Types of failures: Fail-stop, fail-restart, omission, delays, partition, Byzantine failure
-
Latency: synchronous and asynchronous transmission modes
-
State, replicas, caching
-
Caching vs. replication
-
Stale data
-
Consistency
-
Global state
-
-
Transparency goals (just a high-level understanding)
- Location, Migration, Replication, Concurrency
-
Service models
-
Centralized
-
Client-server
-
Multi-tier (how does it compare with layered architectures?)
-
Peer-to-peer
-
Hybrid P2P
-
-
You don’t need to know any of the “-as-a-service” models
Networking
-
Understand the concept of protocols and layering
- I will not ask you to enumerate the OSI or IP protocol stack, but you should understand the functions of the data link, network, transport, and application layers.
-
Data Link Layer
-
Local Area Network (LAN)
-
Ethernet - service guarantees
-
-
Network Layer: purpose
-
Transport Layer: TCP & UDP
-
Transport endpoints (ports) vs. network endpoints (addresses)
-
Port numbers
-
TCP: connection-oriented service, full-duplex connections, reliable & in-order data delivery, flow control, and congestion control
-
UDP: connectionless service, no retransmits, drop bad packets
-
- What are advantages of using TCP or using UDP?
-
-
QUIC: why was it created?
-
Protocol encapsulation concept
-
Sockets
-
Concept
-
Operations at the system call level: create, bind, connect, listen, shutdown, communication (know what they do, not what the parameters are)
-
-
General principles of the design of the Internet
-
Connection of disparate networks via routers
-
Unreliable communication
-
End-to-end principle
-
Fate sharing
-
Best-effort packet delivery
-
Remote procedure calls
-
Concept of a remote procedure call (RPC)
-
Stub functions (proxies and skeletons)
-
Stub generation
-
Interface definition language (IDL) concept
-
Marshalling
-
Data representation, endianess
-
Serialization: canonical vs. receiver-makes-right
-
Pass by reference issue
-
Explicit versus implicit typing
-
-
Semantics of remote procedure calls
-
Failure of RPCs
-
at most once and at least once semantics
-
-
Idempotent vs. non-idempotent functions, retries
-
Idempotency keys
-
Purpose of an RPC compiler
-
Purpose of an RPC name service
-
Versioning
-
Timeouts vs. deadlines
-
Surrogate process (Microsoft)
-
Marshaling and serialization examples
-
RPC-specfic solutions: XDR, NDR
-
Google Protocol Buffers
-
JSON
-
XML
-
-
Garbage collection
- Reference counting, leases, pinging (heartbeats)
Web services
-
Motivation for web services
-
XML-RPC: general concept
-
SOAP: just that it extended XML-RPC; purpose of WSDL
-
REST
-
What problems was it trying to solve?
-
How is its approach different from RPC?
-
CRUD operations: POST, GET, PUT, DELETE
-
-
Stateful vs. stateless services
-
Advantages of HTTP/2 vs older HTTP
-
gRPC: why was it created? General principles
-
Need for observability; request IDs
Clock synchronization
-
What is UTC?
-
System clock, wall time
-
What’s an epoch?
-
Accuracy, resolution, precision
-
Clock drift, offset, and jitter
-
Compensation: slewing and stepping
-
Clock discipline
-
Cristian’s algorithm
-
Understand the goal and formula for Cristian’s algorithm
-
Error bounds. Remember that errors are cumulative (additive).
-
-
NTP
-
NTP synchronization subnet
-
NTP strata
-
What is jitter?
-
You don’t need to memorize the NTP(SNTP) formula but be sure to understand how it gives you the same result as Cristian’s
-
You don’t need to know how dispersion and jitter are calculated
-
You don’t need to know the NTP message structure or validation tests
-
-
PTP
-
Goal of PTP vs. NTP
-
Role of grandmaster
-
What is the best master clock? (Don’t remember the priority order)
-
Don’t memorize the formula
-
Logical clocks
-
Causal vs. concurrent events
-
Lamport’s algorithm
-
Goals
-
Happened-before relationship
-
Partial ordering vs. total ordering
-
Algorithm: know how it works
-
Deficiencies
-
Remedy for creating total order
-
-
Vector clocks
-
Goals
-
Algorithm
-
Know how to identify concurrent events by comparing timestamps
-
Understand how to represent vector clocks if the group membership is unknown (sets of node:clock values)
-
-
Hybrid logical clocks
-
Goals
-
Role of the two values
-
Understand when L and C change
-
Group communication
-
Unicast, broadcast, multicast
-
I won’t ask about anycast
-
Sending vs. receiving vs. delivering; holdback queue
-
Understand each of these failure modes:
-
Crash failure
-
Omission failure
-
Byzantine failure
-
Partition failure
-
-
Reliability of message delivery
-
Unreliable, best-effort delivery
-
Best-effort reliable
- feedback implosion
-
Reliable multicast
-
Durable multicast
-
Publish-subscribe model (concept)
-
-
Message Ordering
-
Unordered
-
Single Source FIFO (SSF): understand how to achieve this
-
Causal (partial) ordering: understand how this is achieved
- When is a message not delivered?
-
Total order: understand how to achieve this
-
Synchronous order: understand what this means
- What is a sync primitive?
-
-
Atomic multicast: What’s cmobined?
-
IP multicasting
-
IP multicast address – what is its purpose?
-
Internet Group Management Protocol (IGMP)
-
Purpose (host to edge router)
-
Understand the basic protocol: membership query, membership report, leave group
-
What is pruning?
-
-
Protocol Independent Multicast (PIM)
-
IGMP vs. PIM
-
PIM Dense Mode multicast: flooding
-
PIM Sparse Mode multicast
-
Rendezvous points
-
-
Failure detection
-
What does the FLP impossibility result tell us about reaching agreement?
-
Push-based heartbeating
-
Pull-based heartbeating/pinging
-
Phi accrual failure detector
-
Just understand what it tries to do
-
You don’t need to know how φ maps to probabilities
-
Virtual Synchrony
-
Group membership service: purpose
-
What is a view and a view change?
-
What is a stable vs. unstable message?
-
Steps in a view change: what does flushing do?
-
What is a state transfer and when is it needed?
Mutual exclusion
-
Understand properties: safety, liveness, fairness
-
Types: centralized, token-based, contention-based
-
Central-server algorithm: messages involved
-
Distributed mutual exclusion algorithms:
-
Token ring
-
Lamport
-
Ricart & Agrawala: optimizatin over Lamport’s
-
Understand pros and cons of each
-
Leader election algorithms
-
Bully algorithm: how does it work?
-
Ring algorithm
-
How does it work?
-
How does it avoid duplicate elections?
-
Last update: Tue Feb 17 20:14:04 2026