Course Syllabus
- Lecture
- WEB 1250 (Tue & Thu 15:40 to 17:00)
- Office Hours
- Prof. Stutsman <stutsman@cs.utah.edu>: in MEB 3436 (Tue 13:00 to 14:00 and Thu 13:00 to 14:00)
- TA Yadunandan Ramanna <u1529145@utah.edu>: in MEB 3225 (Wed 12:00 to 14:00)
- Class Discord Server
Schedule
| Date | Lecture | |
| Tue 8/19 |
Introduction & Networking |
Programming Assignment Setup, Homework 1, and Programming Assignment 1 Released |
| Thu 8/21 | RPC, PA1 Discussion Slides |
REQUIRED: Do the Online Go Tutorial before class Optional Reading: Coulouris §3.4,§§5.2-5.3 van Steen §§4.0-4.2, §8.3 |
| Tue 8/26 | RPC Failures, Go & PA1 Discussion |
Homework 1 Due (before class) REQUIRED Reading:
|
| Thu 8/28 |
Consistency: Linearizability |
Fri Aug 29 Drop/Add Deadline REQUIRED Reading: Optional Reading: |
| Tue 9/2 | Transactions: 2PL Slides |
Homework 2 Due (before class)
Optional Reading: |
| Thu 9/4 | Transactions: 2PC & OCC Slides Slides |
PA 1 Due (Sun 9/7) Optional Reading: |
| Tue 9/9 | State Machine Replication & Consensus Slides |
|
| Thu 9/11 | Raft Slides |
REQUIRED: Optional: |
| Tue 9/16 | Distributed Hash Tables/Sharding Slides |
Optional Reading: Chord (Links to an external site.) van Steen §5.2 and §2.3 |
| Thu 9/18 | No Class | |
| Tue 9/23 | Spanner Slides |
Homework 3 Due (before class) REQUIRED Reading: Spanner |
| Thu 9/25 | Spanner, cont. |
Homework 4 Due (before class) |
| Tue 9/30 | Distributed Shared Memory, RDMA Slides |
Optional Reading: FaRM |
| Thu 10/2 | FaRM wrapup, Final Project Ideas | PA 2 Due (Fri 10/3) |
| Tue 10/7 | No Class - Fall Break | |
| Thu 10/9 | No Class - Fall Break | |
| Tue 10/14 | Final Project Planning & Map-Reduce Slides |
Optional Reading: MapReduce paper Links to an external site. Coulouris §21.6.1 Spark |
| Thu 10/16 | Spark Slides |
|
| Tue 10/21 | CXL, Disaggregated Memory Slides |
Optional Reading: Pond TPP |
| Thu 10/23 | Tigon Slides |
Optional Reading: Tigon |
| Tue 10/28 | Byzantine Fault Tolerance Slides |
Optional Reading: PBFT van Steen §8.2 |
| Thu 10/29 | Bitcoin & Cryptocurrencies Slides |
REQUIRED Reading: Bitcoin |
| Tue 11/4 | Bitcoin, cont. | Final Project Check-In Report 1 Due |
| Thu 11/6 | Caching at Scale, Cache Consistency Slides |
Optional Reading:
|
| Tue 11/11 | Logical Time Slides |
Optional Reading: Coulouris §14.1-14.4 van Steen §6.1-6.2 (most slides follow the van Steen reading closely) (Links to an external site.) |
| Thu 11/13 | Eventual Consistency Slides |
Optional Reading: Bayou Dynamo |
| Tue 11/18 | AI/ML Systems | Optional Reading: Checkmate |
| Thu 11/20 | Orchestration | Final Project Check-In Report 2 Due (Fri 11/21) |
| Tue 11/25 | Wrap Up Slides |
Homework 5 Due |
| Thu 11/27 | No Class - Thanksgiving Break | |
| Tue 12/2 | Final Presentations and Q&A | |
| Thu 12/4 | Final Presentations and Q&A | Final Project Report Due (Fri 12/5) |
| Fri 12/10 | No Final Exam - No Meeting (3:30 – 5:30 pm) |
Course Content Overview
In the last few decades, large-scale distributed systems have revolutionized the way we live and work. They form the basis for our communications platforms. They provide our only means of finding, aggregating, storing, and analyzing the massive data we collect each day. These systems will only need to grow larger, faster, and more reliable as more and more of our lives and devices are online.
Building distributed systems, especially those that operate at large-scale with high performance, presents special challenges. For example, scale introduces faults and the need for redundancy. Redundancy complicates consistency.
This class introduces many of the key aspects of designing and building distributed systems such RPC, naming, routing, replication, consistency, fault tolerance, transactions, and time.
The first half of the class is driven in large part by lectures often extracted from real systems described in papers from the systems research community. Students are expected to attend lectures and take short comprehension quizzes and take home exams. Later lectures will fold in some current research topics like kernel-bypass.
The class includes a set of labs on scaling a key-value store. The majority of the effort in the course will be dedicated to a group project of the students' choosing based on appropriate topics for the course.
Course Objectives
Students that successfully complete this course should be able to:
- explain the underlying standard mechanisms that modern distributed systems use (RPC, consensus, leases, concurrency control).
- explain the various types of systems that comprise many large-scale distributed infrastructures (metadata stores, batch compute frameworks, filesystems, databases, caching, etc).
- use RPC and specifications of distributed algorithms to implement fault-tolerant, available systems.
- approach, discuss, and communicate about difficult and technical subject matters in the area of distributed systems.
Topic List
This list of topics serve as a road map for the class. Depending on time some topics will change, and we likely won't (quite) be able to cover everything listed here.
- Fundamentals
- Introduction
- Networking, Concurrency, and RPC
- Soft/hard State, Caching
- Time & Logical Clocks
- Vector Clocks
- Eventual Consistency & Scaling
- Distributed Snapshots
- Decentralized Systems and Distributed Hash Tables
- Replicated State Machines
- Primary/Backup
- View Change & Consensus Protocols
- Consistency
- Strong Consistency (Linerizability, Sequential Consistency)
- Weak Consistency (Causal Consistency, Eventual Consistency)
- Transactions
- Serializability
- Atomic Commit and 2PC
- Concurrency Control: 2PL, OCC, MVCC
- Performance
- Modeling & Measurement
- Byzantine Fault Tolerance
- PBFT
- Bitcoin & Nakamoto Consensus
- Modern Blockchain Platforms
Syllabus
This course is subject to the SoC and CoE Policies and Guidelines; review and understand these policies at the start of the semester.
Basic Information and Contact
- Lecture: 15:40-17:00 Tuesday and Thursday.
- In-person attendance is expected.
- Course Staff:
- Instructor: Ryan Stutsman <stutsman@cs.utah.edu>
- TA: Yadunandan Ramanna <u1529145@utah.edu>
- Office hours:
- Professor, Ryan in MEB 3436 (Tue 13:00 to 14:00 and Thu 13:00 to 14:00)
- TA Yadu in MEB 3225 (Wed 12:00 to 14:00)
- Prereqs: CS 5460, CS 4480, or similar systems experience with a heavy programming component.
- 3 Credit Hours
- Policy on incompletes: University policy requires that 80% of coursework must be complete in order to issue an incomplete. Incomplete grades are only an option if you had a documented legal or medical emergency during the semester.
Textbook
The course has no official textbook, but there are several texts that can be of help:
- Distributed Systems: Concepts and Design, Coulouris et al (will provide some optional suggested readings from this book).
- Distributed Systems, van Steen and Tanenbaum (available free online on book site; will provide some optional suggested readings from this book).
Grading
Final course grades will be based on:
- 20% for programming assignments (aka "Labs").
- There will be between 2 to 4 of these. These will be done in groups. They will be "open" assignments where you will have freedom in how you approach the assignment. Assessment will be based on your solution and reports describing your approach.
- 20% for homeworks.
- About 6 to 12 total homeworks; these will generally be very short "checkins" turned in just ahead of class to facilitate discussion. Some of these will be attached to required readings or pre-class tasks.
- 40% for final project.
- These will be done in groups. Students will submit a proposal, various checkin reports, the final project code, a final report, and they will present a mandatory.
- 20% for participation.
- Some lectures will have some preparation attached, like a reading and answering some discussion questions. Some assignments may involve mini-projects that you will attempt and come ready to discuss in class.
- In-class participation (which includes attendance) is critical to doing well in this class.
- The primary expected form of participation is by contributing to discussion in class.
- Having more than three unexcused absences will impact your final grade; on the 4th absence and each their after your final grade will be lowered by one grade rank (A- to B+ to B, and so on) up to the 20% covered by the participation grade.
- ATTENDANCE IS STRICTLY REQUIRED WITHOUT EXCEPTION ON Tue 11/25, Tue 12/2, and Thu 12/4 since these are the final project presentation days.
Lectures
Some class meetings will be lectures, and some may be part discussion. You must read all required readings before lecture; we will limit to these to at most once a week. You can find out what paper to read for each meeting on the calendar (below). Required readings are marked "REQUIRED". Required readings will also generally have a short pre-class homework (see below).
Programming Assignments
There will be two to four programming assignments done in groups of four. See the misconduct policy below for details on collaboration. Because the assignments are somewhat open-ended different groups may spend substantially different amounts of time on them depending on student background and student interest in optimizing their solution.
Homeworks
Homeworks based on (typically immediately) prior material or the assigned required reading will be assigned to complete. Homework weights may vary depending on the difficulty/questions included. Some homework questions may be fully graded and others may be "spot checked" depending on staff time resources.
Homework is open-book, open-note, and the usual collaboration policy applies.
Late Submissions, Regrades, and Appeals
All assignments must be turned in on time for credit.Regrade requests must be submitted in writing; no adjustments are made in-person neither by TAs nor the professor. Students who wish to appeal a grade must do so within two weeks of receiving the grade.
Collaboration and Cheating
- Everyone needs to read the SoC Policy on Academic Misconduct.
- This class is exceptional in some important ways. Our goal in this class is for you to collaborate, consider design alternatives, and try things out.
- Because of this, in this course it is acceptable for you to talk to other groups about their approaches and to work closely with your group members.
- It is also permissible in this class to look at the code of others' online and to consult GenAI models (see below).
- However, you are still expected to respect copyright, you are expected to write your own code, and you must indicate ANY sources you used to produce your ideas and solutions -- both on individual pieces of code and in your reports.
- If you have any questions about what constitutes cheating, please ask first.
Generative AI Tools
The use of Generative AI tools presents special challenges for this course. Use of these tools use is allowed, but with specific and important restrictions so please read carefully.
Restriction #1: Indicate Your Use of the Models
If you use a Gen AI model to generate generic code or used it to heavily inform a piece of your code you must indicate such above the code in a comment.
If you write code with Copilot enabled this distinction is difficult, so please indicate at the top of each affected file that you used Copilot on it.
Restriction #2: Your Solution Must Go Beyond What a Model Produces
If you ask a GenAI model to produce a whole solution to a programming assignment, if it is effective then it is expected you find a way to improve on it substantially.
In Classwork Other Than Code
Some restrictions apply to homeworks. For these it is fine to consult GenAI in forming your answers. But, DO NOT paste long-winded, wholesale output from GenAI. If you didn't write it, I don't want to have to grade it.
Attendance
Students are expected to attend all lectures in person. Students are responsible to keep up in the course by attending regularly. Students must also check the course calendar regularly and any Canvas announcements to ensure they are aware of ongoing/upcoming readings, assignments, and exams.
ATTENDANCE IS STRICTLY REQUIRED WITHOUT EXCEPTION ON Tue 11/25, Tue 12/2, and Thu 12/4 since these are the final project presentation days.
College of Engineering Guidelines
Information on withdrawing from courses, appealing grades, and more, see the College of Engineering Academic Affairs website.
School of Computing Guidelines
This class is also subject to the School of Computing Guidelines and Policies.
Student Mental Health Resources
- Rates of burnout, anxiety, depression, isolation, and loneliness have noticeably increased during the pandemic. If you need help, reach out for campus mental health resources, including counseling, trainings and other support.
- Consider participating in a Mental Health First Aid or other wellness-themed training provided by our Center for Student Wellness and sharing these opportunities with your peers, teaching assistants and department colleagues.
Classroom and Class Behavior
Students are expected to maintain professional behavior in class according to the University of Utah Student Code, which is available here. Students should read the Code carefully and know what their responsibilities are. According to Faculty Rules and Regulations, it is the faculty responsibility to enforce responsible classroom behavior, beginning with verbal warnings and progressing to dismissal from class and a failing grade. Students have the right to appeal such action to the Student Behavior Committee.
Safety
The University of Utah values the safety of all campus community members. To report suspicious activity or to request a courtesy escort, call campus police at 801-585-COPS (801-585-2677). You will receive important emergency alerts and safety messages regarding campus safety via text message. For more information regarding safety and to view available training resources, including helpful videos, visit safeu.utah.edu.
Students with Disabilities
The University of Utah seeks to provide equal access to its programs, services and activities for people with disabilities. If you will need accommodations in the class, reasonable prior notice needs to be given to the Center for Disability Services, 162 Union Building, 581-5020 (V/TDD). CDS will work with you and the instructor to make arrangements for accommodations.
Addressing Sexual Misconduct
Title IX makes it clear that violence and harassment based on sex and gender (which Includes sexual orientation and gender identity/expression) is a civil rights offense subject to the same kinds of accountability and the same kinds of support applied to offenses against other protected categories such as race, national origin, color, religion, age, status as a person with a disability, veteran’s status or genetic information. If you or someone you know has been harassed or assaulted, you are encouraged to come speak to the School of Computing Advisors and/or to the Title IX Coordinator in the Office of Equal Opportunity and Affirmative Action, 135 Park Building, 801-581-8365, or the Office of the Dean of Students, 270 Union Building, 801-581-7066. For support and confidential consultation, contact the Center for Student Wellness, 426 SSB, 801-581-7776. To report to the police, contact the Department of Public Safety, 801-585-2677(COPS). More information is available at https://safeu.utah.edu (Links to an external site.).
Preferred Name and Pronoun
Class rosters are provided to the instructor with the student’s legal name as well as “Preferred first name” (if previously entered by you in the Student Profile section of your CIS account). While CIS refers to this as merely a preference, we will honor you by referring to you with the name and pronoun that feels best for you in class, on papers, exams, group projects, etc. Please advise us of any name or pronoun changes (and update CIS) so we can help create a learning environment in which you, your name, and your pronouns will be respected.
University Counseling Services
The process of earning any university degree can be stressful and with the added burden of the rigorous workload and high GPA requirements of a CS degree, along with other issues many students face (e.g., commuting, working, family, etc.), it is often the case that students will need additional counseling and support.
The University of Utah Counseling Center (UCC) offers brief individual, couples and group counseling, psychiatric medication services and psychological assessment for eligible UU students. Any student who is experiencing adverse stress levels should feel free to contact their course instructors, the School of Computing advisors and staff, or contact the UCC directly. For more information, please call 801-581-6826 or refer to: https://counselingcenter.utah.edu/.
Veterans Center
If you are a student veteran, the University of Utah has a Veterans Support Center located in Room 161 in the Olpin Union Building. Hours: M-F 8-5pm. Please visit their website for more information about what support they offer, a list of ongoing events and links to outside resources. Please also let me know if you need any additional support in this class for any reason.
Learners of English as an Additional/Second Language
If you are an English language learner, please be aware of several resources on campus that will support you with your language and writing development. These resources include: the Writing Center; the Writing Program; the English Language Institute. Please let me know if there is any additional support you would like to discuss for this class.
Undocumented Student Support Statement
Immigration is a complex phenomenon with broad impact—those who are directly affected by it, as well as those who are indirectly affected by their relationships with family members, friends, and loved ones. If your immigration status presents obstacles to engaging in specific activities or fulfilling specific course criteria, confidential arrangements may be requested from the Dream Center. Arrangements with the Dream Center will not jeopardize your student status, your financial aid, or any other part of your residence. The Dream Center offers a wide range of resources to support undocumented students (with and without DACA) as well as students from mixed-status families. To learn more, please contact the Dream Center at 801–213–3697 or visit dream.utah.edu.
Diversity
It is our intent that students from all diverse backgrounds and perspectives be well-served by this course, that students’ learning needs be addressed both in and out of class, and that the diversity that the students bring to this class be viewed as a resource, strength and benefit. It is our intent to present materials and activities that are respectful of diversity: gender identity, sexuality, disability, age, socioeconomic status, ethnicity, race, nationality, religion, and culture. Your suggestions are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally, or for other students or student groups.
Acknowledgements
Much of the structure and content of the course was adapted from MIT's 6.824. Special thanks to Robert Morris, Franz Kaashoek, and Nickolai Zeldovich at MIT and Mike Freedman, Kyle Jamieson, and Wyatt Lloyd at Princeton for all of the incredible content on which this course is built.
Note: This syllabus is meant to serve as an outline and guide for our course. Please note that I may modify it with reasonable notice to you. Any changes will be announced in class and posted on Canvas under Announcements. The Course Schedule will evolve as we progress through the semester, so check it regularly.
Course Summary:
| Date | Details | Due |
|---|---|---|