Spring 2020

This course is about the fundamental concepts and algorithms underlying existing distributed systems.

We'll cover many topics, including:

  • Networks
  • Distributed Algorithms
  • Distributed file systems
  • Peer-to-peer systems
  • Mobile and Ubiquotous systems


Christine Bassem

Lecturer - Office E122

Office hours:
Tuesday 2 pm - 3:30 pm
Thursday 1 pm - 3:30 pm
OR by appointment

CS343 Spring 2020 schedule

Please check this page frequently, as it is subject to change.
Date Lecture slides Required readings Assignment / Notes More resources
Jan 28 Introduction Course webpage
Jan 31 Crash course on Networks Chapters 3 and 4 of The Distributed Systems textbook by CDKB
Feb 4 Creating your first Network application
Feb 5 Assignment 0 is due
Feb 7 Peer-to-peer networks Gnutella as an example of a peer-to-peer network Skype as an example of an overlay peer-to-peer network
Feb 11 The "Cloud"
Feb 14 MapReduce
Feb 18 No class, Monday schedule
    Assignment 1 is due
Feb 21 More on MapReduce
Read the paper assigned to you from last class
Feb 25 Virtual Time Chapter 3 (Sections 1-6) of the Distributed Computing textbook by KS
Feb 28 Global Snapshots (1) Chapter 4 of the Distributed Computing textbook by KS
Mar 1 Assignment 2 is due Sunday at 11:59pm
Mar 3 Global Snapshots (2) Chapter 4 of the Distributed Computing textbook by KS
Mar 6 Leader Election Chapter 5 (Sections 5.1 to 5.5 and 5.10) of the Distributed Computing textbook by KS Chapter 15 of the Distributed Systems textbook by CDKB
Mar 10 More on distributed algorithms Chapter 5 (Sections 5.1 to 5.5 and 5.10) of the Distributed Computing textbook by KS
Till End of Spring 2020 You will find all resources and schedule on Piazza

Administrative details of CS349

Course Overview

Prerequisites The prerequisite for CS349 is CS230:Data structures, with CS231 and CS242 highly recommended. Registration is by permission of instructor only.

Textbook The recommended textbooks for the course are:

Every lecture, there will be required readings from multiple sources with a reference to the related chapters in these books. You do not have to buy the books, but they are excellent references.

Course Group Make sure that you are added to the Course's Piazza group. This group has several purposes, one of which is class announcements.
I encourage you to use it for class discussions, and questions. If you know the answer to a classmate's question, feel free to post a reply yourself. Please do not post any code in your messages on the group!

Course Requirements

Lectures Lectures will be held virtually via Zoom during (almost) regular time. We'll start class at 1PM and end at 2PM. You each should have received an invitation to a calendar event with the details on how to join the virtual class. The details will also be posted on Piazza.

Group Discussions Most discussions in the lecture will be in a group format. Groups will be formed of 4 students. We'll acheive this via Breakout sessions in Zoom.

Assignments There will be a mix of written assignments and programming assignments. All written assignments are individual assignments, to be submitted in class. All programming assignments are to be done in pairs, to be submitted through your GitHub repository. Please check Assignment 0 for more details on how to set up your GitHub account, and join the course's repository.

Final Project: During the second half of the semester, project teams of 2 students work on a final project. I have prepared for your a list of project topics, but other project ideas are welcome! If your group prefers to work on an interesting application or problem, we can discuss it.

Each team will give a short presentation of their "almost" final project during the last two meetings of the semester, and will submit the final project with its documentation before the last day of exams.

Exams: There will be no exams in the course for the Spring 2020 semester, and they will be replaced with individual written assignmnets, in which no collaboration is allowed.

Final Grades For Spring 2020, grading will be mandatory credit/none. There is an option to receive a credit with distinction (MCRD), which represents higher merit. Consistent active participation in the course is a key factor to receiving an MCRD. Active participation can be in the form of:


All support in the course will be held virtually, through Zoom chats, Piazza posts and discussions, and emails.

Christine's Office Hours All office hours will be held via Zoom (details in Piazza). There will be two types of office hours, open join-in and one-on-one office hours.
* Open join-in office hours will be held on Tuesdays from 11AM to 12:30PM, and on Wednesdays from 10PM to Midnight.
* As for the one-on-one office hours, 15 minute slots will be available for your to sign up on the course's support calendar (link here). Once you sign up, a Zoom meeting will be automatically scheduled.
* Of course, if none of these times work for you, feel free to email me, and I will do my best to schedule another time with you.

Collaboration in CS343

Here is overview on our collaboration policy, and it is followed by a more detailed explanation below:

You know that collaboration is awesome!

During class, all discussions and exercises will be done by the whole team. During assignments, I encourage you to talk with other students about the course material, especially with your team-mates. In general, teams are allowed to discuss assignment tasks with other teams and exchange ideas about how to solve them. However, there is a thin line between collaboration and plagiarizing the work of others.

Each team or individual student must compose their own solution to each task. Discussing strategies and approaches with classmates and receiving general debugging advice from them is acceptable and encouraged. However you (and your partner) are required to write and debug all of your code yourselves. Furthermore, you should never look at another student's code. For example, it is OK to borrow code from the textbook, from materials discussed in class, and from other sources as long as you give proper credit. However, it is unacceptable and constitutes a violation of the Honor Code (1) to write a program together with someone not part of your team and turn in two copies of the same program, (2) to copy code written by your classmates, or (3) to read another student's or team's code.

In keeping with the standards of the scientific community, you must give credit where credit is due. If you make use of an idea that was developed by (or jointly with) others, please reference them appropriately in your work. It is unacceptable for students to work together but not to acknowledge each other in their write-ups.

Special Accommodations

If you have a disability or condition, either long-term or temporary, and need reasonable academic adjustments in this course, please contact Accessibility and Disability Resources (ADR) to get a letter outlining your accommodation needs, and submit that letter to me. You should request accommodations as early as possible in the semester, or before the semester begins, since some situations can require significant time for review and accommodation design. If you need immediate accommodations, please arrange to meet with me as soon as possible. If you are unsure but suspect you may have an undocumented need for accommodations, you are encouraged to contact (ADR). They can provide assistance including screening and referral for assessments.

Disability Services can be reached at accessibility@wellesley.edu, at 781-283-2434, by scheduling an appointment online at their website, https://www.wellesley.edu/adr or by visiting their offices on the 3rd floor of Clapp Library, rooms 316 and 315.