CAS CS451/651 Distributed Systems
Fall 2019

Department of Computer
College of Arts and Science

"A distributed system is a collection of independent computers that appears to its users as a single coherent system." [Tanenbaum and Steen 2006]. Every major internet service is a distributed system. Examples include Google, Facebook, Youtube, banking websites and for that matter the World Wide Web itself. Other fundamental services such as Global Positioning Systems (GPS), Domain Name Services (DNS) and email are also distributed systems. For students to be effective, today and in the future, as decision makers, technical advisors, innovators and implementors they should be familiar with the principles and paradigms that underlying this important class of systems.

This page
the course piazza site


Welcome! Here's to a fun term hacking! This year we have completely revamping the course and modeling it after the MIT 6.824. We will be learning right along with you. It should be a fun term where we will read some papers together and write some go code!
Please use Piazza to read announcements and discuss labs, lectures and papers. We will look at Piazza regularly and answer questions (unless one of you answers first); the entire class can see and benefit from these exchanges.


Prof. Jonathan Appavoo
Math & Computer Science Building Office: 293
111 Cummington Street, Boston, MA
Phone: (617) 358-1062
Email: jappavoo (at)
Office Hours: Mon 4:00PM-6:00PM and Wed 4:00PM-6:00PM
James Cadden
Math & Computer Science Building Office: 203
111 Cummington Street, Boston, MA
Phone: (617) 358-1062
Email: jappavoo (at)
Office Hours: TBA

Teaching Fellow

Tommy Unger
Email: tommyu (at)
Office Hours: TBA

To reach the instructor or TF at times other than office hours please send email. The purpose of the office hours is to answer specific questions or clarify specific issues. Office hours are not to be used to fill you in on a class you skipped or to explain entire topics.

Time And Place


Monday, Wed 2:30pm to 3:45pm
SAR 101 (Sargent College of Health and Rehabilitation Sciences 101)


Monday 9:05-9:55am, 10:10-11:00am, 11:15am-12:05pm, 12:20-1:10pm
FCB 104

Course Description


CS451/651 (Distributed Systems) is a fast-paced, broad and practical introduction to the fundamentals of distributed systems. The class will be taught in the style of a graduate course and requires the reading research papers and independent exploration of the material. The class will include lectures, readings, programming labs, a mid-term exam, and a final exam. It will present abstractions and implementation techniques for engineering distributed systems. Major topics include fault tolerance, replication, and consistency. Much of the class consists of studying and discussing case studies of distributed systems.

This version of the course draws heavily from MIT 6.824. This class owes most of it contents to Robert Morris, Frans Kaashoek and Nickolai Zeldovich who developed much of the 6.824 course material. It is with great admiration and thanks that we are using it.

Formal Description

Programming-centric introduction to how networks of computers are structured to operate as coherent single system. Introducing principles of architecture, processes, communications, naming, synchronization, consistency and replication, fault tolerance and security, and paradigms such as web-based, object-based, file systems, and coordination-based.


The prerequisites for this course are CS 112, CS 210 Computer Systems. It is also helpful if you have taken one or both of CS 455 and CS 452. Substantial programming experience will be helpful for the lab assignments. Students without the prerequisites will not be allowed to enroll in the course. If you you are unsure about your preperation please see the instructor.

Grade Breakdown

Your final grade will be determined approximately as follows:

Programming Labs 50%
Mid-term and Final 35%
Class participation, lecture question, paper question answer, and code review 15%

Programming Labs

You must write all the code you hand in for the programming labs, except for code that we give you as part of the assignment. You are not allowed to look at anyone else's solution (and you're not allowed to look at solutions from previous years). You may discuss the assignments with other students, but you may not look at or use each other's code. Please do not publish your code or make it available to current or future students. repositories are public by default, so please don't put your code there unless you make the repository private. You may discuss the paper questions with other students, but you may not look at other students' answers. You must write your answers yourself.

Weekly Class Structure and Evaluation

Most class meetings will be part lecture and part paper discussion. You should read the paper before coming to class, and be prepared to discuss it. You can find out what paper to read for each meeting in the schedule.

We will post a question about each paper 24 hours before the beginning of class. Your answer need only be long enough to demonstrate that you understand the paper; a paragraph or two will usually be enough. We won't give feedback, but we will glance at your answers to make sure they make sense, and they will count for part of the paper discussion grade.

Will have an exam during class in the middle of the term, and a final exam during finals week.

There are programming labs due every week or two throughout the term.


Be forewarned the workload in this course will be heavy. To master the conceptual material covered in the lecture and prepare you for completion of the labs there will be required weekly research papers to read and programming required outside of class time.


Graduate students will be required to either do the 4th assignment or a final project with an associated report and presentation. See the Project Page for more details. Projects must be done in groups of 3-4 students.

Class Schedule

See the separate schedule page


There is not required text for this class

You may find this book useful to get an overview of various topics that we will be covering in the research papers we read.

[DS:CS Required Text] Andrew S. Tanenbaum and Maarten Van Steen, Distrib uted Systems Principles and Paradigms,

Online References

Distributed Systems


GNU/Unix Tools

The GNU project provides online manuals for all of the GNU tools, including:

Academic Honesty

Assignments must be completed individually. Discussion of issues in computer systems is encouraged, but representing the work of another person as your own is expressly forbidden. This includes "borrowing", "stealing", copying programs/solutions or parts of them from others. We may use an automated plagiarism checker. Cheating will not be tolerated under any circumstances. Handing in your own work a day or two late will affect your grade far less than turning in a copy of someone else's work on time!

See the CAS Academic Conduct Code, in particular regarding plagiarism and cheating on exams. Copies of the CAS Academic Conduct Code are also available in room CAS 105. A student suspected to violate this code will be reported to the Academic Conduct Committee, and if found culpable, the student will receive a grade of "F" for the course.