Instructor: Andrea C. Arpaci-Dusseau
When: TR 2:30 - 3:45
Where: 1289 CS
Office: 7375 CS
- Programming Assignment 7:
Due Friday, May 15th by 5:00. (strict deadline!)
- Programming Assignment 6:
Due Thursday, April 30.
- Midterm distribution of grades (out of 32 points, 4 points for
each of the 8 questions):
- Programming Assignment 5:
Due Thursday, April 16.
- Programming Assignment 4:
Concurrent Erlang Due Tuesday, March 10 (end of day).
- Advice papers on writing and reviewing systems papers:
- An Evaluation of the Ninth SOSP Submissions or How (and How Not)
to Write a Good Systems Paper; by Roy Levin and David Redell, 1983 here
- The Task of the Referee, by Alan Jay Smith, 1990 here
- Reviews for a Program Committee by John Ousterhout here
- Conference Reviewing Considered Harmful, by Tom Anderson here
- Programming Assignment 3:
Final Sequential Erlang Due Thursday, Feb 26.
- Programming Assignment 2:
Sequential Erlang Due Thursday, Feb 12.
- Programming Assignment 1: Erlang Warm-up Due Thursday, Jan 29.
Welcome to the graduate Distributed Systems class. In this course,
we read classic papers on distributed systems as well as more recent
research papers published in places like SOSP and OSDI. From our
reading, you will learn about the fundamental principles behind such
systems used to build scalable distributed services like Google. We
will also be experimenting with Erlang, a programming language for
highly parallel, distributed, fault-tolerant systems.
The work in this course will have two components: reading papers and
programming in Erlang.
For reading papers, you will have three responsibilities: writing a
short essay to answer a discussion question for each paper,
participating in the discussion of each paper in class, and a short
midterm and final exam.
Our reading focuses on the distributed system knowledge that is
needed to build scalable, fault-tolerant services. We will be mostly
reading recent papers from the two top systems conferences: Symposium on
Operating Systems Principles (SOSP) and Operating Systems Design and
Implementation (OSDI). We will also read a few of the most classic
distributed system papers to fill in some necessary background.
The complete list of papers is available here
These papers assume that you already know the relevant background
in the operating systems literature. Therefore, I expect that you
have already taken CS736 (Graduate Operating Systems) before taking
this course; if you have not, then please see me on the first day of
- Paper Write-ups: To help make our discussions more
interesting, you are expected to read each paper before class. To
ensure this, before each class you must e-mail me a short write-up
that addresses the question for that paper. The question for each
paper is listed here. Your write-up should
be approximately three paragraphs. Your e-mail should be in plain
text (no attachments) and the subject should be "739: [keyword for
paper]" where [keyword for paper] is the one word I used in the Lecture Schedule.
- In-class Discussion: The format of most classes is very loosely
structured around a list of questions for each paper. I expect that
everyone in the class will participate each and every day. In case you
want to prepare for the questions, I'll try to make them available
ahead of time; but, you really shouldn't need to look at them if you don't want to. The exception to this format is when we
are discussing a more "theoretical" paper; in this case, I'll present
a more formal lecture with power point slides.
- Exams: We'll have an in-class midterm and final exam. The
exams should be straight-forward.
This semester, we as a class will be learning Erlang. Erlang is a functional
programming language that lets you build highly distributed
fault-tolerant programs. Many different domains are leveraging Erlang
recently, from Facebook to Amazon.
Throughout most of the semester, we will have straight-forward
programming assignments so that everyone masters the basics. Then,
for a final project, everyone will develop and evaluate some
new Erlang application of your choice.
I assume that everyone will buy the book Programming Erlang:
Software for a Concurrent World by Joe Armstrong, from The
Pragmatics Programmers series. It is available from Amazon for about $25.
Erlang is now installed on the Linux machines in the department. See
/s/erlang for everything you need.
Interested in reading more for thinking about projects? Then you
might like the following links.