Welcome to CS 351: Distributed Systems - Fall 2025.
Courseware
Office hours
- Monday 4:00pm - 5:30pm: Instructor OH (Anna CDS 708, Vasia CDS 713)
- Tuesday 11:00am - 12:30pm: TF OH (CDS 801)
- Wednesday 4:00pm - 5:30pm: Instructor OH (Anna CDS 708, Vasia CDS 713)
- Thursday 2pm-4pm: TF OH (CDS 1001)
- Friday 1-3pm: TF OH (CDS 1001)
- Friday4-5:30pm: TF OH (CDS 364)
Overview
CS 351 covers fundamental concepts of distributed computing (logical clocks, causal order, snapshots, consensus, atomic commit), communication and synchronization primitives, concurrency control, task and data parallelism, data consistency, replication, and fault tolerance.
Specifically, we will cover the following topics:
- Computation and communication primitives (Threads, Remote Procedure Call)
- Concurrency Control (Mutexes, Optimistic vs Pessimistic control)
- Task Parallelism, Data Parallelism, Pipeline Parallelism
- Time in Distributed Systems (Causal Order, Lamport Clocks, Vector Clocks)
- Distributed Snapshots (Chandy-Lamport protocol)
- Replication (Primary-Backup Replication, Chain Replication, Replicated State Machines)
- Distributed Consensus (Raft)
- Data Consistency (Strong vs Weak consistency, Linearizability, Sequential Consistency, Causal Consistency, Eventual consistency)
- Distributed Transactions (ACID, Serializability, Two-Phase Commit)
- Sharding and Consistent Hashing
- Distributed Shared Memory
- TLA+
- Golang (Go runtime, Go routines, Go channels, etc.)
Prerequisites
CAS CS 210.
NOTE: CASCS 350 and CASCS 351 fulfill the same major requirement (“take two of the 3 courses in CS 320, CS 332, CS 350”). Students are allowed to take both CS 350 and CS 351 for credit. In this case one of the two will be applied towards electives in the major.