| Instructor | Aurojit Panda (E-mail) |
| Help? | CampusWire (Join Code: 7793) |
| When? | Wednesday 4:55pm to 6:55pm |
| Where? | Warren Weaver Hall Room 101 |
| Who | Day | Time | Where |
|---|---|---|---|
| Aurojit Panda | Monday | 1– 2pm | 405 60FA |
This course is a graduate introductory course on distributed systems.
Workload
This class requires (contributions to the final grade are in parenthesis).:
- Reading between 2 and 3 research papers each week, analyzing their content and participating in discussions during lectures. (10% of the final grade will be participation and quizzes on the papers. We will announce how this works shortly.)
- Work on three labs. Details below. (25% of the final grade)
- Work on a final project. (20% of the final grade)
- A midterm on TBD (will be out by January 27) , (20% of the final grade)
- A final exam (date determined by the registrar) covering all of the material in the class (25% of the final grade).
The late policy and collaboration policy are below. Make sure you have read and understood both.
Schedule
This is tentative and subject to change
| Date | Topic & Readings | Other |
| 01/21 | Introduction, no reading |
Lecture Notes New Notes: Introduction New Notes: Modeling |
| 01/28 |
Traces and Liveness Lamport '78 Alpern and Schneider' 85 |
Pre-class notes Notes New Notes: Trace Properties |
Labs and Final Project
All but the final lab are to be done in Elixir a functional language that implements the actor model and must use our emulation layer. Lab 1 and a couple of additional sections will introduce you to the programming environment.
- Lab 1 is an introduction to the classes programming environment, and is meant to bring you up to speed with the use of recursion and teach you enough Elixir to work on the rest of the projects.
- Lab 2 and Lab 3 both aim to implement Raft, a commonly used consensus protocol.
The class diverges for the final project:
- If you are a PhD student or are interested in independent research you can use a research project you are already working on, or propose a new one for your final project. You will then make a poster that we can make available to other students in the class, and submit a short report.
- For everyone else we will provide a list of proposed projects. You can pick from among those or work on anything that interests you.
Note that the final project dictates a substantial portion of your grade, and thus we we expect that you have a deep understanding of the project, why its important, and its limitations. In particular, projects done within a single week without much forethought are unlikely to meet this bar.
Regardless of whether your project is based on ongoing research or something specifically chosen for the class, you will need to submit a proposal (by TBD), make a poster (details forthcoming) and submit a write up. In both cases the proposal should explain what you are planning on doing, and how you plan to test your work. For the research project you should also provide motivation and preliminary related work.
Final projects should ideally be done in groups of 2, but we can accommodate cases where you want to work alone. Please get in touch with Panda as early as possible.
Late Policy
You have 5 late days that you can use across all labs. Late days incur no penalty, but you are responsible for recording any late days you use in a README file handed in with the lab. Any additional late days will incur a 10% deduction. Any lab submitted more than 5 days late will receive a 0.
Collaboration Policy
You are allowed (and in fact encouraged) to discuss readings, and the reading questions with others (including people who might not be in this class). However, all answers you submit must be written by you and should not be copied from anyone else. Additionally, you must understand your answer, we reserve the right to interview you and quiz you about your answers. Additionally, you must cite all sources (people, websites, papers, etc.) that you consult as a part of your work.
You are allowed to discuss labs with others in the class. You may not however share code with anyone else in class. This means you may not show your code to anyone else, and you may not copy code from anyone else. Additionally, similar to above: (a) you must understand the functioning of all code you submit; and (b) you must cite any sources you consulted while working on the lab. We reserve the right to both talk to you about details of your code and to use automatic tools to detect cases where code is copied.
We will investigate any suspected academic misconduct, and will report it to the department as required by GSAS policies.
A word about citing: as you can see we require you to cite any external sources you use for the class. External sources here include but are not limited to previously published articles, blog posts, Stackoverflow or similar sites, conversations with other people, etc. This policy is not meant to discourage the use of external sources, instead it just codifies a standard academic practice. You should be generous with your citations.
Finally, by taking this class you agree to never post any solutions for the labs publicly.