15-440/640, Fall 2021: Distributed Systems

Overview

15-440 is an introductory course in distributed systems. The emphasis will be on the techniques for creating functional, usable, and high-performance distributed systems. To make the issues more concrete, the class includes several multi-week projects requiring significant design and implementation.

The goals of this course are twofold: First, for students to gain an understanding of the principles and techniques behind the design of distributed systems, such as locking, concurrency, scheduling, and communication across the network. Second, for students to gain practical experience designing, implementing, and debugging real distributed systems.

The major themes this course will teach include scarcity, scheduling, concurrency and concurrent programming, naming, abstraction and modularity, imperfect communication and other types of failure, protection from accidental and malicious harm, optimism, and the use of instrumentation and monitoring and debugging tools in problem solving. As the creation and management of software systems is a fundamental goal of any undergraduate systems course, students will design, implement, and debug large programming projects.

Evaluation is based on homework assignments, the projects, and two exams.

Course Staff

Teaching Assistants

NameEmailOfficeOffice Hours
Nirav Atre GHC 5th commons Sunday: 9am - 11am
Han Zhang GHC 5th commons Wednesday: 1pm - 3pm
Crystal Jin GHC 5th commons Saturday: 2pm - 4pm
Emma Cohron GHC 5th commons Wednesday: 3pm - 5pm
Eunice Chen GHC 5th commons Monday: 10am - 12pm
Jack Cameron GHC 5th commons Monday: 1pm - 3pm
Karl Xiao GHC 5th commons Friday: 1pm - 3pm
Kishan Patel GHC 5th commons Saturday: 10am - 12pm
Qifei Dong GHC 5th commons Friday: 4pm - 6pm
Riccardo Santoni GHC 5th commons Thursday: 4:30pm - 6:30pm
Victor Song GHC 5th commons Thursday: 2pm - 4pm
Will Foy GHC 5th commons Tuesday: 2pm - 4pm
Young Hun Oh GHC 5th commons Tuesday: 6pm - 8pm

Instructors

NameOfficeHours
Yuvraj Agarwal TCS 327 Thursday: 12:00pm - 1:00pm
Rashmi K. Vinayak GHC 9011 Friday: 1pm - 2pm

If you need to reach out to course instructors (such as discussing personal emergency situation), please user your CMU email account to reach out to the email list:

This ensures your email is delivered to both instructors and course staffs for prompt responses. As mentioned in the first lecture, emailing the instructors directly will likely not yield a response.

Course Administrators

Marcella Baker, , GHC 6006
Jennifer Cooper, , TCS 331

Office Hours

See individual course staff entries above. We use OHQ for managing queues for TA office hours. Please join at https://cmu.ohqueue.com/.

Prerequisites

Because this course has a big project component, you must be proficient in C and programming on UNIX systems. We will use the Go programming language throughout the term. It is required that you have taken 15-213 and gotten a "C-" or higher since many of the programming skills you will need are taught in that course. However, if you received a C in 15-213, you must meet with your academic advisor to discuss your background before taking 15-440/640, perhaps taking an additional course to sharpen your systems skills. Your advisor must email us approval and an explanation of why you have sufficient background to take 15-440/640

Learning Objectives

After this course, students will have learned to...

Course Policies

Collaboration

Students are encouraged to talk to each other, to the TAs, to the instructors, or to anyone else about any of the assignments. Any assistance, though, must be limited to discussion of the problem and sketching general approaches to a solution. Each student must write out his or her own solutions to the homework. The project handouts have more detailed information about collaboration when working on the projects, but, basically, each programming project group must write their own code and documentation for the programming projects done as a group.

Consulting another student's or group's solution is prohibited, and submitted solutions may not be copied from any source. These and any other form of collaboration on assignments constitute cheating. If you have any question about whether some activity would constitute cheating, please feel free to ask the instructors.

You may not supply work that you complete during 15-440 to other students in future instances of this course or for use in future instances of this course (just as you may not use work completed by students who've taken the course previously). To be clear, this also means you may not leave your solutions publicly visible on the web, github, or any other platform.

Piazza Policy

This course uses the Piazza web site for answering questions. The home Piazza page for this course is at: https://www.piazza.com/cmu/fall2021/1544015640/home. When posting questions on Piazza, students must keep in mind the collaboration guidelines noted above, and use those guidelines to determine:

Part of the learning process is struggling with the material until you arrive at the right insight for you to understand it. Posting too much detail in response to a request for assistance can impair learning. On the other hand, sometimes it's great to be nudged in the right direction when you're not able to get out of a rut. And, of course, misunderstandings of the assignment or tools available should be helped rapidly. Please use your best judgement when posting to the Piazza site, as if you were collaborating with your friends in person. A few rough guidelines:

Please use your judgement between these two examples. If you post privately, please let us know whether or not it would be OK to mark the post public if we feel it would be beneficial to the class to make it public.

Late Policy

Take project and homework deadlines seriously. Our experience is that students often seriously underestimate the effort involved in programming assignments and projects. If we give you 4 weeks to complete an assignment, there is typically a reason. In the interest of fairness, we have adopted the following late policy:

Re-Grading

If you think we made a mistake in grading, please return the assignment with a note explaining your concern to the course secretary no later than two weeks after the day the assignment was returned. We will have the question re-graded by the person responsible for grading that question.

Also note that in this course, project grades will be determined based on the final submission you make to Autolab.

Recordings

The course staff in 15-440 strongly encourage participation and asking questions during lectures, and to attend our office hours and interact there.

The lectures will be recorded to accommodate special scenarios (feeling unwell, isolation due to recent close contacts, etc.). You can find the recording folder here (same link as in Canvas). Enrolled students should have access to the folder automatically. We will add waitlisted students manually as well. If you are officially enrolled but have trouble viewing recordings, please contact us.

Partner Problems

Please try to avoid having partner problems. Seriously! Share your hopes before they turn into concerns, your concerns before they have problems, and your problems before they inflate into crises.

Also, in order for the course staff to help you and your partner work through issues, or for us to provide an appropriate response to serious partner problems, you must contact us well before the relevant due date! While some problems can never be truly solved, it is likely that your career after CMU will you to sometimes "involve management" to address issues with co-workers, and will certainly require you to work out all sorts of problems with your co-workers. If you find yourself in a situation which you can't resolve, it will provide you with an opportunity to practice interacting with management.

A special case to avoid is coming to us a day or two before a major deadline to tell us that your partner has been ill (etc.) for multiple weeks. We, and thus you, have many more options if you inform us while a problem is developing, instead of after the fact.

Take care of yourself

Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress.

All of us benefit from support during times of struggle. You are not alone. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is often helpful.

If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. Counseling and Psychological Services (CaPS) is here to help: call 412-268-2922 and visit their website at http://www.cmu.edu/counseling/. Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.

If you or someone you know is feeling suicidal or in danger of self-harm, call someone immediately, day or night:

CaPS: 412-268-2922
Re:solve Crisis Network: 888-796-8226

If the situation is life threatening, call the police:

On campus: CMU Police: 412-268-2323
Off campus: 911


Last updated: 2021-12-01 13:39:19 -0500 [validate xhtml]