CS 451/651 ''Distributed Systems''

Spring 2020-2022

Programming-centric introduction to distributed systems. The course discusses system design principles, computation and communication primitives, concurrency control, task and data parallelism, data consistency, distributed transactions, replication, fault tolerance, and distributed consensus. Part of the discussion includes case studies of real systems from industry. This is a graduate-level course that requires reading research papers and independent exploration of the material.

You can find the Spring 2022 syllabus here.

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

Fall 2020-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.

You can find the Fall 2022 syllabus here.