Course Objectives and Scope |
Course Prerequisites |
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
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.
For the first two
and a half weeks of classes, I will be available every weekday evening from 9:00
to 10:30pm if you want to stop by and chat. You can sign up here.
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.
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
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.
The Zoom link to attend synchronously the first two lectures is
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.
- The class will have a midterm and a semi-final.
- The Midterm will take place on Sunday, October 11, at 7:30 pm, in Statler 196 and Statler 185
All exams will be in person
You will complete Lab 1 on your own; you will instead work at the
other labs in groups of two.
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:
- Global states and event ordering
- Logical clocks
- Vector clocks
- Consistent cuts and global property detection
- Rollback-recovery and message-logging protocols
- State machine approach
- Agreement protocols
- Failure detectors
- Replication and consistency
- Byzantine fault tolerance
- Atomic Commit
- Epidemic Protocols
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.
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
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
That said grades will be determined as follows:
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
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
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:
Slip days used (this project):
_______ Slip days used (total): ______ 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.
Assignments that do not carry this information will not be
- Misrepresenting slip days information will be
considered as a violation of academic integrity
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 (firstname.lastname@example.org). 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,