Class Information

Staff | Course Objectives and Scope | Course Prerequisites | Textbook | Lectures | Grading | Exams | Integrity |

Lorenzo Alvisi
Office: Gates Hall 413a (HA HA HA!)
Office Hours: MW: 7:00-8:00pm
Teaching Assistants
  • Sameer Arora
    Office Hours: Sat: 10am-12pm
  • Matt Burke
    Office Hours: M: 10am-12pm
  • Cong Ding
    Office Hours: Wed: 3:00-5:00pm
  • Krishna Raju Khunadharaju
    Office Hours: T: 5:00-7:00pm
  • Evan Patrick
    Office Hours: F: 1:30-3:30pm
  • Randy Zhou
    Office Hours: T: 9:00-10:00pm; Th: 9:00-10:00pm
  • OH information in Google calendar format is found here. Once you open the calendar, you can find the Zoom link to join a particular office hour by clicking on the corresponding calendar entry.


I am excited that you have chosen to take CS5414. I love this class, and I love the material we cover. I fell in love with distributed computing 30 years ago, and I still find the field incredibly intellectually satisfying.
I strongly believe that the adventure we are about to embark in is infinitely more rewarding if we go through it together, as a synchronous learning community. So I would like to have a chance to meet you, personally -- well, at least on line.

You'll make a small time investment (slots are for 10 minutes) but you'll for sure never more be just a face in the crowd.

Basic logistics

Everything you read below is of course dependent on the degree by which COVID-19 is affecting our community. But, as long as classes are offered in person, this is synchronous hybrid class whose enrollment is limited to students who are able to attend in person classes in the Ithaca area. I am teaching in Uris G01 on Mondays and Wednesdays (you will find the exact times below). Friday's lecture is online for everyone. You are allowed and expected to attend in person only one lecture a week; you will attend the other two lectures synchronously on Zoom.

Lectures will end before the semifinal exam and Thanksgiving break. Once you leave Ithaca, you will no longer need to attend lecture and will be able to focus solely on your project (and on other classes!).

You should have received a seating assignment that specifies both the day of the week you are allowed to attend in person and the seat in Uris that you should take. You should not come to class on a day when you are not scheduled to attend; and, when you attend, you are required to stay in your assigned seat even if you see other ``better'' seats are not occupied.

First-Week Zoom link

The Zoom link to attend synchronously the first two lectures is here. Feel free to use it if you are still shopping around for classes.



The course will include five labs. Lab 0 is simply designed to familiarize yourself with the environment common to all labs and will not be graded. You will be completing Labs 1 through the first half of Lab 4 -- those more ambitious among you may want to go for Lab 4 in its full glory.
You will complete Lab 1 on your own; you will instead work at the other labs in groups of two.

Course Objectives and Scope

The objective of this course is to introduce you to the key ideas that have shaped distributed computing and are likely to do so in the future; the ambition of this course is to get you as excited about them as I am. The thing about distributed computing that really grabbed me when I first became exposed to it was how its tremendous practical impact was based on beautiful, elegant, theoretical foundations. Because of asynchrony, partial failures, network partitions and concurrency (all issues you'll be an expert on by the end of this course) it is virtually impossible to hack a distributed system into submission: getting it right means being able to prove things about it. This course strives to mirror the multi-faceted nature of the subject it covers. Classes focuses on fundamentals: We will cover problems, models, algorithms, and impossibility results. But to keep ourselves honest, we will integrate the theoretical discussions with substantial projects that will allow to apply some of the concepts discussed in class.
Topics will include the majority (we are going to shoot for all and see what happens) of the following:

Course Prerequisites

The ideal student should have a good undergraduate background in Operating Systems, but, as long as you are willing to learn on demand the OS concepts we will touch upon, (and I'll be happy to give you pointers on how to do that), you should be fine.
So, what are the real hard pre-requisites? The first is to be willing to participate in class. I like to make the class interactive---and for that, I need you. Second, you need to be willing to get in touch with your inner Ninja, both on the theoretical and systems side. You should either be (or be willing to become) comfortable about developing proofs, as several of the homework problems will require you to develop protocols and prove them correct. The course programming assignments, in turn, will expose you to a disciplined and empowering way to get your feet wet building distributed systems.


There is no required textbook for this class. (Thank you, thank you). Instead, there will be reading assignments centered on research papers that discuss in greater depth what we will be discussing in class. You'll see that the course web page lists papers both under Required Readings and To know more . I have tried very hard to limit the number of required reading per week to just one (and succeeded in all but one week). But if you are at all interested in Distributed Computing, I hope you will try some of the recommended papers: they are typically foundational papers in the field, and thus we will cover in class the material they present---but there is nothing like getting it from the horse's mouth.

Lecture Notes and Recordings

I will make available pdfs of my class notes---I'll do this after class (typically at the end of the week), because I want you to think about the question I'll be asking "live", rather than reading the answers in my notes! Lectures will be recorded and made available eventually on Canvas, so that you can go back to them.


Class attendance (or lack thereof) does not directly reflect into credit: however, it is my experience that students who don't attend class tend not to do as well, because they become disengaged and then struggle to catch up.


MW: 4:55-6:10pm, in Uris G01 (or online). Please see your seating assignment
F: 4:10-5:00pm online


We have created a Piazza account for the class.

A note about email

I would like to discourage you from contacting me by email with substantive technical questions; instead, I would like to encourage you to come see me in person during my office hours, asking for an appointment outside of them if necessary, to discuss questions you may have about the material. There are two reasons for why I strongly discourage you from having a technical conversation by email: 1) DOS defense. As you know, a one-line email may require several pages of explanations back: a perfect Denial of Service attack! The problem is that the attacker (you :-) ) can at very low cost for himself cause the server (me) to perform an unbounded amount of work. A strategy to counter denial of service is to structure protocols so that a potential attacker must perform approximately the same amount of work as the server: if the question is important enough to require 30 minutes of my time, then it should justify 30 minutes of yours. 2) It may sound cheesy, but I want to get to know you, and you visiting my office (even if virtually)is the best way for me to accomplish this.


It is important for you to realize what grades in this class reflect and what they don't reflect. All we can grade you on is how well you demonstrate that you know the material this semester. We can't grade you on how much of a success you'll be after graduation, how smart/creative/persistent/self-motivated you are, or even how well you'll be able to apply the material in the future. And after all, it is what you do in the future, not what you do this semester, that's really important.

That said grades will be determined as follows:

Exams (2)

50% (20%/30%)

Homework (3)


Projects (3)


Extra-credit (course eval)


Projects will be of different complexity, which will be reflected in the percentage of credit that each will earn.


In some courses, the TAs and instructor have to spend a lot of time dealing with re-grading appeals, time that would be better spent helping students learn the material. Absolutely come to us if we make an arithmetic error, but realize that a few points here and there are extremely unlikely to make any difference in your final grade. If you believe that we assigned too little credit for your work, you may submit your work for a re-grade under the following restrictions. (1) All re-grade requests must be submitted with a clear, written statement that explains why you believe the original grade was incorrect. (2) All requests for re-grades must be submitted within 1 calendar week of when the graded work is returned. (3) We will truly re-grade the entire exam, problem set, or project assignment, not just the issue you bring to our attention. So, to be clear: if in the process we find out other issues that had escaped us the first time, we will deduct points. Thus, you grade can go up or down on a re-grade.

Academic Integrity

Unless told otherwise, you are required to work alone on your homework. Please not collaborate with anyone (within your group, outside of your group, on the Internet, whether synchronously or asynchronously) on other homework. Looking on line for solutions to problem set questions (even those buried in research papers not assigned as readings) will be very much considered a violation of the Code of Academic Integrity.

A word to the wise: this is a graduate class: any violation of the Cornell Code of academic integrity will most likely result in a F in the course.

When it comes to the projects, you have required to complete Lab 1 alone. Starting in Lab 2, you are encouraged to work on the Lab in groups of 2. Working with other people not only can lead to a better understanding of the material but it will enable you to develop collaboration skills that should prove helpful throughout your career. Each participant in a group should be able to explain the entire content of any submitted solution.

Students are also expected to be familiar with the University's and the CS Department's various policies on appropriate use of computers.

Late policy. You start the semester with a little treasure of 10 slip days, that you can use across homework and projects. Use your treasure wisely, since no further extensions will be provided (except for illness documented by a doctor or, God forbid, death in the immediate family). Slip days that have not been redeemed before the final exam period are lost.

If two project partners have different numbers of slip days remaining on their accounts, the slip days account for the team is the min of the partners' slip day balances.
To help your TAs track your slip-day status, the top of your project README file (or your homework) should include the line:

Please note that: Slip days will be tracked at the granularity of a day; if an assignment is 1 minute late, it is one day late: this is not to be draconian, but to show some respect for your TA.

Special Accommodations

If you have a disability-related need for reasonable academic adjustments in this course, please provide an accommodation notification letter from Student Disability Services to Ms Coralia Torres ( Students are expected to give two weeks’ notice of the need for accommodations. If you need immediate accommodations or physical access, please arrange to meet with me within the first two class meetings. The website for Student Disability Services is:

This page is maintained by Lorenzo Alvisi. Last updated September 4, 20196