MPCS 52040 Distributed Systems (Autumn 2022)

Section 1
Instructor(s) Chard, Kyle (chard)
Location JCL 011
Meeting Times Wednesday 1:30pm - 4pm
Fulfills Core Systems Elective


Course Description 
This course focuses on the theory and practice of distributed systems. Modern applications and services are increasingly distributed due to growing data sizes, plateauing sequential processing power, and the enormous number of connected devices. Virtually all web, mobile, and even PC applications now rely on networked services, calling out to backend servers to perform various functions, and many individual applications are implemented as a collection of cooperating processes or services.  For example, distributed systems are used in massively multiplayer online games, cloud services, e-commerce and banking systems, peer-to-peer networks, social network, self-driving cars, telecommunication systems, and distributed databases and file systems.
In this course we will explore the need for distributed systems, understand characteristics of distributed systems, investigate where distributed systems are used, review the unique challenges of distributed systems, analyze solutions for common distributed systems problems, and gain practical knowledge of the systems and algorithms for building real distributed systems.
Course Contents
The course will cover the following topics: 
·         Distributed architectures
·         Processes and threads
·         Networking and communication mechanisms
·         Naming and mapping
·         Synchronization
·         Distributed time and ordering
·         Consistency
·         Fault tolerance
·         Distributed consensus
·         Distributed data
·         Data intensive computing
The course will include weekly homework, two exams, and one project. 
The weekly assignments will include a mix of practice problems and programming assignments designed to reinforce materials covered in lectures. 
The project will be a 4-week team project that provides the opportunity to apply skills learned in lectures to develop a distributed system. 
The final grade will be determined as follows:
·         Homework assignments: 20%
·         Project: 35%
·         Midterm Exam: 10%
·         Final Exam: 35%
The course will use the following textbook: 

Maarten van Steen and Andrew Tanenbaum, Distributed Systems 3rd Edition

Course Prerequisites

Core Programming. MPCS students must have completed Core Programming or received a Core Waiver to take this class.

Other Prerequisites

This course requires competency in Unix and Linux. Please plan to attend the MPCS Unix Bootcamp ( or review the UChicago CS Student Resource Guide here:

Overlapping Classes

This class is scheduled at a time that does not conflict with any other classes this quarter.

Eligible Programs

Masters Program in Computer Science MS in Computational Analysis in Public Policy (Year 2) MS in Molecular Engineering MA in Computational Social Science (Year 1) MA in Computational Social Science (Year 2) Bx/MS in Computer Science (Option 1: Research-Oriented) Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors)