"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 https://cs-people.bu.edu/liagos/cs651-2022.html the course piazza site
- Announcements/NEWS
- Instructor
- Office Hours
- Time And Place
- Course Description
- Prerequisites
- Grade Break Down
- Weekly Class Structure and Evaluation
- Project and Workload
- CS651
- Class Schedule
- TextBooks
- Online References
Academic Honesty
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.
CS651 (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.
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 CS112 (or equivalent), and CS210 or CS350 (or equivalent). 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.
Your final grade will be determined approximately as follows:
Programming Labs | 50% |
Mid-term and Final | 40% |
Class participation, lecture question, paper question answer, and code review | 10% |
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. github.com 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.
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.
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, Distributed Systems Principles and Paradigms.
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.