MPCS 52040 Distributed Systems (Autumn 2024)

Section 1
Instructor(s) Chard, Kyle (chard)
Location Crerar 390
Meeting Times Wednesday 5:30pm - 8:30pm
Fulfills Core Systems Elective

Syllabus

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
 
Coursework 
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%
 
Textbook
The course will use the following textbook: 

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

Course Prerequisites

Core Programming completed. This is an advanced Core Systems class. New MPCS students must receive a PASS on the MPCS Programming Placement Exam I and MPCS Programming Placement Exam II or have received a Core Waiver for programming to take this class in your first quarter in the program. All new MPCS students should view information about the exams in the MPCS Programming Placement Exam Canvas site.

Other Prerequisites

This course requires competency in Unix and Linux. New students must attend the MPCS Unix Bootcamp during orientation. Continuing students who previously attended the MPCS Unix Bootcamp have covered the required material. Continuing students who did not attend the MPCS Unix Bootcamp may review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/.

Overlapping Classes

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

  • MPCS 50103-1 -- Mathematics for Computer Science: Discrete Mathematics
  • MPCS 51400-1 -- Functional Programming
  • MPCS 53112-1 -- Advanced Data Analytics
  • MPCS 52560-1 -- Applied Financial Technology

Eligible Programs

Masters Program in Computer Science MS in Computational Analysis in Public Policy (Year 2) 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) MS in Molecular Engineering Masters Program in Computer Science (new) Placement: Pass I + II (w/ Advanced) Masters Program in Computer Science (new) Placement: Pass I + II