home

news

research

students

teaching

publications

other

CS 351 ''Distributed Systems''

Spring 2023, 2024, 2025

CS 351 teaches you how networks of computers can be structured to operate as a single coherent system. The course discusses fundamental concepts of distributed computing, including computation and communication primitives, concurrency control, parallelism, logical time, replication, fault tolerance, distributed consensus (Raft), data consistency, distributed snapshots, sharding, consistent hashing, distributed transactions, and TLA+. All programming assignments are in Go.


CS 651 ''Distributed Systems'' (grad)

Spring 2020, 2021, 2022, Fall 2023, 2024, 2025

Programming-centric introduction to distributed systems for graduate students. CS 651 is a fast-paced course that focuses on real systems from industry, includes graded paper reading, and requires independent exploration of the material. Topics include concurrency control, parallelism, replication, fault tolerance, distributed consensus (OmniPaxos), data consistency, distributed transactions, cluster computing, distributed tracing, peer-to-peer systems, serverless, and systems for decentralized trust.


CS 599 L1 ''User-centric Systems for Data Science''

Fall 2020, 2021, 2022

The course focuses on algorithmic techniques and system design principles that help humans get meaningful insights into complex data processing pipelines. In the first part of the course, we discuss methods for explaining computation outputs, including approaches from databases and recommendation systems. In the second part, we discuss state-of-the-art approaches to interpretable machine learning, such as generalized additive models, LIME, and SHAP. In the third part, we focus on techniques that help users understand execution performance. We discuss traditional and causal profiling, end-to-end tracing, and critical path analysis.