CMSC 23380 / 33380 Foundations of Distributed Systems Spring 2026¶
Course Description¶
Modern applications, from AI training clusters to web-scale data analytics, run on distributed systems that span hundreds or thousands of machines. This course introduces the fundamental principles that enable such systems to provide reliability, scalability, fault tolerance, and high performance despite failures, latency, and contention. We will study the classical foundations of distributed systems (time, ordering, consensus, fault tolerance) and connect them to modern cloud-native infrastructure such as object stores, distributed databases, serverless compute, and large-scale dataflow engines.
Through a combination of lectures, readings, and hands-on programming assignments, students will learn to design, reason about, and build distributed systems. By the end of the course, students will be able to analyze tradeoffs, evaluate system behavior under failure, and implement practical distributed systems.
Course Overview¶
This course covers the fundamental principles and techniques for building correct, efficient, and scalable distributed systems. Topics include:
- Distributed Architectures
- Communication, RPC and Messaging
- Failures and Fault Models
- Replication
- Coordination and Consensus
- Consistency Models
- Distributed Databases, File Systems and other Storage Systems
- Distributed Computing Frameworks
- Case studies of real-world systems (GFS, MapReduce, Dynamo, Spanner, Zookeeper, etc.)
Staff¶
Instructor¶
Suhail Rehman
Office: JCL 158 (Behind the MADD Center)
Office Hours: Mon/Wed 2-4pm
TAs¶
| TA | Office Hours | |
|---|---|---|
![]() |
Jason Carr | Mon 5-7pm JCL 205 |
![]() |
Siddharth Shastry | Wed 5-7pm JCL 207 |
![]() |
Tipireddy Shiva Rama Krishna Reddy | Thu 2-4pm JCL 205 |
![]() |
Rutvij Joshi | Thu 4-6pm JCL 205 |
![]() |
Zitong Li | Tue 5-7pm JCL 207 |
Course Logistics¶
Lectures¶
| Lecture Section | Time | Location |
|---|---|---|
| Section 1 | Tue/Thurs (9:30 - 10:50 am) | Stuart 101 |
| Section 2 | Tue/Thurs (12:30 - 1:50 pm) | Ryerson 251 |
Communication¶
There are a number of different ways we’ll be communicating about the class.
-
Course materials: Assignments and other course materials will be made available on Ed which is linked in the sidebar.
-
Discussion and announcements: - We will use Ed for course discussion and announcements. See the applications on the left side of the screen for a link to our Ed Discussion site.
-
Asking Questions: If you need to communicate with the instructional staff and the matter is not private, you should use Ed.
-
Coursework and feedback - We will use Gradescope to collect your homework and projects and to return feedback. See the applications on the left side of the screen for a link to our Gradescope site. Your homework is not considered submitted unless you turn it in on Gradescope, github pushes will not count.
-
Office hours - Office hours are times when the course staff are available for you. The instructor and teaching assistants will have scheduled office hours in person and/or online. While most students use this as an opportunity to ask about coursework, you’re free to ask about or discuss things that are related directly or indirectly to the course or to computer science more generally.
Textbook and Readings¶
The course will have a number of readings from research papers and other sources. These will be announced on Ed and posted in the schedule. We will also have a few readings from the following textbooks:
- Designing Data-Intensive Applications by Martin Kleppmann. Accessible via the O'Reilly Learning Platform, free access via the University of Chicago Library.
- Distributed Systems: Principles and Paradigms (4th Edition) by Andrew S. Tanenbaum and Maarten van Steen. You can request a free copy of the book from the authors by filling out the form on the website above.
Software¶
The assignments in this course will be implemented in the Go programming language. You may use any development environment you like, but we recommend using Visual Studio Code with the Go extension for development.
You can install Go from the official website: https://golang.org/dl/
Getting Help¶
This is a fast-paced course that covers a lot of material, and the assignments can be challenging. Do not hesitate to reach out the the course staff or instructors via Ed or during office hours if you have questions or need help.
We are here to support you and want to see you succeed in the course!
Grading¶
Your grade in this course will be based on the following components:
| Component | Weight |
|---|---|
| Homework Assignments | 62% |
| Exams (Midterm and Final) | 34% |
| Participation / Reading Check-Ins | 4% |
Students taking the course for graduate credit will have an additional project milestone and a different grading breakdown.
We reserve the right to determine the final score to grade mapping, but you can expect that a 90% will earn a minimum an A-, 80% earns a B-, and 70% earns a C-.
Exams¶
This course consists of two exams: a midterm and a final exam. If you require special accommodations for the exams, please reach out to SDS, as indicated in the Accessibility Section of the course policies below.
If you have a conflict with the midterm, please reach out to the instructor as soon as possible.
For the final, the registrar schedules the finals so there should be no conflict. We require that all students are present on campus for the final and will not offer early or remote finals.
Midterm Exam¶
The Midterm exam will be held on Wednesday, April 29th from 7:00pm - 9:00pm at Kent 107. Further details will be announced closer to the date.
Final Exam¶
The Final exam will be held on Friday, May 29th from 3:30pm - 5:30pm at Kent 107. Further details will be announced closer to the date.
Reading Check-Ins¶
During the start of each lecture, there will be a short reading check-in that needs to be completed.
For students taking the course for Graduate Credit, they will be required to fill out a form summarizing the week's graduate reading papers
Policies¶
Late Policy¶
You are allowed a total of 5 days (120 hours) of late submission time for use in this course. You may use this slack time as you wish. You do not need to request for an extension - Gradescope will automatically keep track of your late submissions for this course. No homework will be accepted more than 5 days late. Note you are not able to retroactively take back submissions or change what submission are used.
Final Grade Penalties
If you use more than the allotted late time we will deduct your final course grade by 4% for each additional late day used. This penalty is applied per minute, which equates to: - ~0.166% per hour past the given 120 hours - ~0.0027% per minute past the given 7200 minutes (120 hours)
Academic Integrity¶
You must adhere to The University of Chicago policy on academic honesty:
The above rules have the final say in all cases, but to summarize as it pertains to this course:
- Do not copy anyone's work.
- Do not allow your work to be copied.
- Do not submit work identical to another student's (this means more than just copying. Writing up detailed pseudo-code together can result in identical code that was not "copied").
- Document all collaboration.
- Credit all sources.
- Sharing work in advance of the deadline in any way, including posting to the internet, is expressly forbidden.
- If you use any source for a small question (e.g. how to loop through the keys of a hash map), please include the source as a comment in your code. For example:
Warning
We take academic honesty seriously and violations will result in serious consequences. If you are found in violation of our academic honesty policy, either through sharing or through copying, the effect on your grade will be severe. At minimum, your final course grade will drop one full step (letter). At maximum, you will receive an F in the course. Furthermore, please note that the instructors are required to report all infractions to the College. If you violate our academic honesty policy, you may be subject to further penalty or disciplinary action by the College.
Generative AI Policy¶
If you are tempted to use an AI assistant to write code for you, consider that you'll then learn correspondingly less from the assignments. Regardless, we will expect you to understand and be able to explain all of the code that you hand in, and to be able to reason about assignment-related questions on the exams.
If you do use an AI assistant, you will be required to discolse this in your submission and include additional information.
For all assignments that involve a design component/writeup, you must complete the written portion of the assignment yourself.
Diversity¶
The University of Chicago is committed to diversity and rigorous inquiry that arises from multiple perspectives. We concur with that commitment and also believe that we have the highest quality interactions and can creatively solve more problems when we recognize and share our diversity. We thus expect to maintain a productive learning environment based upon open communication, mutual respect, and non-discrimination. We view the diversity that students bring to this class as a resource, strength and benefit. It is our intent to present materials and activities that are respectful of diversity: gender, sexuality, disability, socioeconomic status, ethnicity, race, religious background, and immigration status. Any suggestions as to how to further such a positive and open environment in the class will be appreciated and given serious consideration. If you have a preferred name different from what appears on the class roster, or preferred gender pronouns you would like us to use, please let us know.
Accessibility¶
The University of Chicago is committed to ensuring equitable access to our academic programs and services. Students with disabilities who have been approved for the use of academic accommodations by Student Disability Services (SDS) and need reasonable accommodation(s) to participate fully in this course should follow the procedures established by SDS for using accommodations. Timely notifications are required in order to ensure that your accommodations can be implemented. Please meet with me to discuss your access needs in this class after you have completed the SDS procedures for requesting accommodations.
Phone: 773-702-6000
Email: disabilities@uchicago.edu




