Course Objectives and Scope |
Course Prerequisites |
As I mentioned. I will be traveling a few weeks during this
semester. I have set up make up classes for the following dates
(these are all Friday afternoons):
All classes will take place in GAR 0.128 from 5:00 to 6:15 pm.
- September 2, 9, 16, 23 and October 7.
Class participation is important: if
these times don't fit with your schedule, you should consider
whether CS380d is the right class for you to take this semester.
In this course you will learn some of the key ideas that have
proved useful or are expected to be useful for designing and building
tomorrow's distributed systems. The course focuses on fundamentals. We
will cover problems, models, algorithms, and impossibility
results. But to keep ourselves honest, we will integrate the
theoretical discussions with a substantial project, 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
You should have a good undergraduate background in Operating Systems
and be willing to participate in class. You should also be comfortable
about developing proofs, e.g. by induction) as many of the homework
problems will require you to develop protocols and prove them
There is no required textbook for this class. You will be able to
integrate your class notes with pointers to papers relevant to the
material discussed in class, which I will post on the class web site.
If you want to purchase a book, I recommend one of the following:
Other books that we may occasionally refer to or that you may want to
H. Attiya and J. Welch. Distributed Computing: Fundamentals,
Simulations, and Advanced Topics (2nd Ed.) . Wiley 2004.
A discussion of distributed computing with a strong theoretical bias.
The material presented in lecture will be integrated with articles
that will be available for download from the web site (most of them
- S. Mullender (editor) Distributed Systems, Second
Edition, ACM Press, Addison-Wesley, MA, 1994.
This book, which
contains the lecture notes from a summer course on Distributed
Computing, discusses important aspects of both the theory and the
practice of distributed computing. The authors include many of the
leading researchers in the area.
- N. Lynch Distributed Algorithms Morgan Kauffman, 1996.
A monumental tome on, well, distributed algorithm. Not an easy read,
but a very good reference.
- A.S. Tanenbaum and M. van Steen. Distributed
Systems. Principles and Paradigms. (2nd Ed.) Prentice Hall, 2007.
This book provides a good starting point for several of the topics we
will discuss, with an informal presentation style.
- P.A. Bernstein, V. Hadzilakos and N. Goodman. Concurrency
Control and Recovery in Database Systems Addison-Wesley, MA,
A true classic.
5:00-6:30 pm Tuesday and Thursday in GAR 3.116
A note about email
While the TA is going to be available for questions by 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 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 at least 30 minutes of yours. 2) It may sound cheesy,
but I want to get to know you, and you visiting my office 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:
Thursday, December 8, from 7:00 to 10:00 pm. (To be confirmed)
If you have a conflict, please inform the instructor by September 1.
After this date, conflicts will be considered only if they are caused by
- Illness, which has to be documented by a doctor and
approved by the university.
- Death in the immediate
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
re-grade the entire exam, problem set, or project assignment, and if
we were overly generous we will deduct points. Thus, you grade can go
up or down on a re-grade.
Late policy. No extensions will be given for
completing the homework or the programming projects, except that
students will be allowed 6 flexible slip days for projects and
homework during the semester. A student may divide
slip days across projects in any way he or she wishes to extend
deadlines for the projects (or a homework) except for projects or
homework due at the end of the semester.
To help the TA 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. 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.
Project slip days may not be used for homework and vice versa. Exemptions
of the above rules will be allowed in two cases:
Illness, which has to be documented by a doctor and approved by
Death in the immediate family.
The UTCS Code
of Conduct applies to this class: I urge you to read it. Violation
to the Code of Conduct will be prosecuted. In particular, you should
be aware that anyone who is caught cheating will, unless circumstances
demand even stricter sanctions, receive an F in this class.
Assignments that do not carry this information will not be
- Misrepresenting slip days information will be
considered as a violation of academic integrity
This page is maintained by Lorenzo Alvisi. Last updated August 23,