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
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:
Core Programming. MPCS students must have completed Core Programming or received a Core Waiver to take this class.
This course requires competency in Unix and Linux. Please plan to attend the MPCS Unix Bootcamp (https://masters.cs.uchicago.edu/page/mpcs-unix-bootcamp) or review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/
This class is scheduled at a time that does not conflict with any other classes this quarter.