MPCS 52040 Distributed Systems (Spring 2023)

Section 1
Instructor(s) Chard, Kyle (chard)
Location Crerar 011
Meeting Times Tuesday 5:30pm - 8:30pm
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

Other Prerequisites

This course requires competency in Unix and Linux. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here:

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 51235-1 -- Advanced User Interface and User Experience Design
  • MPCS 55001-1 -- Algorithms

Eligible Programs

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) Masters Program in Computer Science