CS 651

« back

CAS CS 651 - Course Syllabus Fall 2025

Instructors: John Liagouris
Teaching Fellows: Eli Baum

Lectures: Mon/Wed 2.30-3.45pm, CDS 701
Discussions: Fri 2.30-3.20pm, CDS 701

Instructor Office Hours: Mon 4-5pm and Wed 4-6pm, CDS 721
TF Office Hours: Tuesday 10-11.30am and Thursday 4-5.30pm, Grey lounge next to CDS 612

IMPORTANT: Refrain from using email to reach the course staff. Use Piazza for all class communication.

Learning Objectives

The goal of this course is to get you excited about the key ideas that have shaped modern distributed systems. By the end of the semester, you will:

Course Overview

CS 651 provides a programming-centric introduction to distributed systems. The course discusses computation and communication primitives, concurrency control, parallelism, replication, fault tolerance, distributed consensus, data consistency, sharding and consistent hashing, distributed transactions, cluster computing, distributed tracing, peer-to-peer systems, serverless, and systems for decentralized trust. Most lectures are centered on real case studies from industry. CS 651 is a graduate-level course that includes graded paper reading and requires independent exploration of the material.

Topics

Prerequisites

CAS CS 350, CS 351, or equivalent (will be enforced!)

CS 651 requires basic knowledge of computer systems. Students must also have good programming skills, otherwise it will be difficult to keep up with the load. Prior experience with parallel programming is a plus but not required to succeed in the course.

Instructional Format and Course Materials

2.1 Courseware

We will use:

2.2 Lectures

Lectures will be held during the assigned time slots. The detailed lecture schedule provides the topic for each lecture. Lecture and lab slides will be made available on Piazza. Some lectures have pointers to assigned readings, which you should complete prior to the lecture.

Textbook

The course does not have a required textbook. The best material to study from are the lecture and lab slides, as well as the notes you take in class. If you are looking for additional resources, below are some good books on distributed systems:  

2.3 Lab Discussions

Labs (Fri 2.30-3.20pm, CDS 701) are a core component of the course. Lab discsussions will be focusing on the following topics:

Some labs may turn into OHs, depending on the progress we make. The TF will post information on Piazza as necessary.

2.4 Programming Language and Software Tools

All programming assignments will be in Golang, and we recommend using VSCode for development. No prior knowledge of Go is required to succeed in the course; the lab sections will introduce you to the language features and the Go runtime.

For code management, we will be using Git. You are expected to regularly push your code to your Github repository. We will provide instructions on how to set up your programming environment on Piazza. Make sure your code is well-documented and always use meaningful commit messages. We will be using your Git commit history to track your progress and give you feedback.

2.5 Office Hours

We will be holding office hours four days a week to further discuss lecture material (with the instructor) and hands-on assignments (with the instructor or the TF). We may also have extra OHs before some assignment deadlines. The instructor and TF will be giving you advice on good coding practices but they are not supposed to debug your code. Debugging is your responsibility.

OH Schedule

3. Assignments, Exams, and Grading Criteria

3.1 Grading Scheme

The course includes reading assignments, programming assignments, a midterm exam, and a final exam. Your final grade will be determined as follows:

3.2 Midterm and Final Exams

The midterm will take place during lecture time (date TBD) and the final exam is scheduled on December 15. Please plan your work and travel plans accordingly. Both exams are open-book; however, the use of electronic devices during the exams is strictly prohibited. You are only allowed to bring hard copies of the lecture and lab slides, your notes, and any papers we have covered in class.

3.3 Reading Assignments

Most lectures will have assigned readings with graded QA that you must submit to Gradescope prior to the lecture. All questions and due dates will be posted on Piazza. We will not accept late submissions for reading assignments. Please take a moment to review the guidelines on how to read research papers by M. Mitzenmacher and S. Keshav (also available on Piazza).

3.4 Programming Assignments

We will release 6 programming assignments during the semester:

Assignment Release Date Due Date Late Due Date* Duration
A1: Futures 9/5 9/12 9/19 1 week
A2: MapReduce 9/15 9/26 10/3 2 weeks
A3: OmniPaxos A 9/29 10/10 10/17 2 weeks
A4: OmniPaxos B 10/13 10/31 11/7 3 weeks
A5: PubSub A 11/3 11/14 11/21 2 weeks
A6: PubSub B 11/17 12/10 - 3 weeks

* with 30% late submission penalty.

All assignment deadlines will be on Friday at 11.59pm (midnight). After each deadline, you will have 1 more week (7 days) to submit late with a 30% penalty. Submissions will not be accepted after this extended period. All solutions will be submitted to Gradescope. Some assignments depend on previous ones and will be challenging. Remember: We are here to help!

3.5 Research Projects

PhD students may chose to replace assignments A5-6 with a small project related to their research, provided that the project includes a distributed systems component. Research projects need approval by the instructor. If you are interested, please send your project proposal to the instructor by October 15.

4. Class and University Policies

4.1 Attendance

We will not be taking attendance in lectures and labs. All course material will be posted on Piazza. Ultimately, you are responsible for your own learning and for keeping up with the homework. Lectures and labs will not be recorded. If you are unable to attend a lecture or a lab discussion, please come to our OHs to catch up.

4.2 Academic Conduct

All hands-on assignments must be completed individually. Discussion with fellow students via Piazza or in person are encouraged, but presenting the work of another person as your own is strictly forbidden. This includes “borrowing”, “stealing”, copying programs/solutions (or parts of them) from others or public repositories. We will be using automated plagiarism checkers. If your submission has more than 50% similarity with another submission or a publicly available solution we have crawled from the Web, you will automatically receive 0 points.

Please take the time to review the CAS Academic Conduct Code.

4.3 On the use of GenAI tools

You are free to use AI tools like Copilot or ChatGPT to help you with the assignments (e.g., for troubleshooting). Prompts like “My program spawns two Go routines each printing ‘Hello’, but when I run it nothing is printed. What may have gone wrong?” are fine. However, asking an AI tool to generate an entire solution for you is not acceptable (and will most likely get you flagged for plagiarism). AI should amplify your understanding of the material, not replace it. Be aware that AI-generated content oftentimes contains errors, omissions, bugs, and misinterpretations that may impact your score. Do not trust anything that an LLM says before cross-checking with another source.

5. Accommodations

If you are a student with a disability or believe you might have a disability that requires accommodations, please contact the Office for Disability Services (ODS) at (617) 353-3658 or access@bu.edu to coordinate any reasonable accommodation requests. ODS is located at 25 Buick Street on the 3rd floor.