Course Syllabus

College of Science/Computer Science Department

CS 249-01, Distributed Computing, Spring 2025

Course and Contact Information

Instructor(s):   Sriram Rao

Office Location: 

Telephone: 

Email: sriram.rao@sjsu.edu

Office Hours: Fridays 12-1p (Zoom)

Class Days/Time: TuTh 1:30-2:45p

Classroom: DH 450

Prerequisite:  CS 149 and Graduate standing. Allowed Declared Major: Computer Science, Bioinformatics, Data Science. Or instructor consent.

Grader and Labs Information

Grader Thinh Bui
Email thinh.bui@sjsu.edu
Lab Hours 3pm-4pm, 05/06/2025
Lab Location Room 832, King Library
Office Hours Additional hours by appointment.

Course Description

Introduction to application protocols for large scale distributed systems including multiprocessor systems. Lab is based on using protocols to build distributed systems.

Course Format

This is an in-person course.

Course Learning Outcomes (CLO)

Upon successful completion of this course, students will be able to:

  1. define the terminology and common ideas of distributed computing.
  2. explain fundamental ideas of distributed computing.
  3. demonstrate experience with distributed computing principles in modern applications.
  4. explain the challenges present in a distributed environment.
  5. explain the differences and trade-offs between various solutions for distributed systems problems.

Tentative Schedule

The tentative schedule is listed here.

Required Texts/Readings

Textbook

There is no required textbook for this class.  Instead, there will be reading assignments centered on research papers that discuss in greater depth what we will be discussing in class.  

Reading

The reading schedule for this course will be intense. The readings are grouped into major categories, such as coordination, consistency, fault tolerance, etc. Within each category, we will read papers that address that issue in the context of different aspects of distributed systems.

To get the most out of readings, you will be assigned to a group for talking about the papers. Each group has three or four people, and you should discuss each paper sometime before class meets.  For each group, one member should writeup a summary of the discussion and post on Canvas before class.  This counts for 10% of the course grade.

Before you read the first paper assigned to this class, please read:  How to Read a Paper.

Operating Systems Background Materials

Other technology requirements / equipment / material

Programming assignments will be a significant part of this course, so access to a computer is required.

Course Requirements and Assignments

I do not grade on a curve. The exams and projects measure what you are expected to have learned. There aren't many opportunities for extra credit apart from potential bonus questions on exams.

Programming Project: We will be doing individual programming assignments.  Individual programming assignments are not group projects. If students get help on assignments, even to resolve a seemingly trivial problem, it must be documented in the code with the name of the person rendering the help and a brief description of the help provided. Extensive help on a project will result in a reduced grade. Failure to document help, or any other forms of cheating will result in a failing grade on the assignment at a minimum and may result in failure of the course. See http://info.sjsu.edu/static/schedules/integrity.htmlLinks to an external site. for more information. Even in open source, you cannot copy code from one open source project to another without attribution.

Programming assignments will be distributed via Github.  Here is the Github repo for this course.  Please create a Github account (if you don't already have one).  We will use Gradescope for assignment submission and grading.  

The labs for this class are known to be demanding.  While the number of lines of code you write will be small (on the order of a few hundreds), debugging distributed systems is hard.  Get started on the labs early.

Late submission:

  1. Submissions that are up to 5 days late will be penalized 10% per day.
  2. Submissions that are up to two weeks late will be penalized 60% of the score.
  3. I will not accept submissions that are more than two weeks beyond the submission date. This will be considered as a non-submission.
  4. At my discretion, non-submissions will likely result in a grade penalty.
  5. There will be a 50% penalty for late submission on the Paper Reading group discussion writeup.

Class Participation: You will be expected to read the papers we are discussing before we discuss them in class.   For each class, I will randomly select a group to lead the discussion about the paper being discussed in class.  To get credit for discussing a paper, each group will be expected to write a short summary about the paper on Canvas.  Short answers such as "Yes" or "I agree" or "I was thinking the very same thing" will not count as well.

Help on Labs: Thinh Bui (course grader) will have weekly in-person "lab hours" in  to help you with the labs.  Please seek his help whenever needed.

Grading Information

Grades will be calculated based on the individual project grades, the two mid-semester exams, the final, discussion participation.  Please see Grading Policy for how you will be graded in this course.  Briefly, the weighted distribution is

Programming Project

40%

Midterm 1

15%

Midterm 2

15%

Final

20%

Paper discussion/participation

10%

The University Policy S16-9, Course Syllabi requires the following language to be included in the syllabus:

“Success in this course is based on the expectation that students will spend, for each unit of credit, a minimum of 45 hours over the length of the course (normally three hours per unit per week) for instruction, preparation/studying, or course related activities, including but not limited to internships, labs, and clinical practica. Other course structures will have equivalent workload expectations as described in the syllabus.”

Final Examination or Evaluation

This course will have a cumulative final exam given during exam week.  The final exam scheduled for this class is on 5/20/25 from 1:00-3:00pm

There will be three in-class exams given in the semester (the last being the final exam). 

Classroom Protocol

The schedule listed below is tentative and may change based on student needs.  

This is your class. Please ask questions. Please come prepared. Do not engage in activity that may distract other students.

I do not take attendance except for the first two classes. Students not attending either of the first two classes will be dropped to make room for students on the waiting list. Attempting to get marked as present (by have someone else attend in your place or using technological deceptions) will be considered academic dishonesty and at a minimum will result in you getting dropped from the course.

Please turn off phones and close your laptops before start each of class.

University Policies

Per University Policy S16-9, university-wide policy information relevant to all courses, such as academic integrity, accommodations, etc. will be available on Office of Graduate and Undergraduate Programs’ Syllabus Information web pageLinks to an external site.. Make sure to review these policies and resources.

Programming Assignments

In this course you will gain practical experience with distributed systems by building a highly available, scalable, fault tolerant, and transactional key-value store. Key-value stores are widely used in cloud computing.

For the projects,  we will use the DSLabs framework from University of Washington.  See Programming Assignments page for more details.

This programming project comprises of individual programming assignments.  Individual programming assignments are not group projects.   The programs you submit must be your work and your work alone.

Caveats: 

  1. A requirement is that you do not publish solutions on public GitHub repos.
  2. The labs are known to be demanding and debugging can be time consuming.  So, please get started early for each lab.

Cheating/Academic Dishonesty

I take issues of Academic Dishonesty very seriously.  Do not cheat.  If we detect cheating in a programming assignment, you will get a 0 for that lab.  Repeat offense will likely lead to a F grade in the course.

Artificial intelligence (AI) tools like ChatGPT, Google Gemini, and GitHub Copilot are not permitted to be used as a replacement for the writing or problem-solving components of this class. SJSU’s subscription to Turnitin has an AI-detection feature, and assignments that have been determined by that application or by other convincing evidence to have been written by AI in substantial fractions will receive an automatic zero. The incident will also be reported to the University as academic misconduct. 

Acknowledgements

This course uses DSLabs framework developed by Ellis Micheal and others from the University of Washington.  Additionally, this course adapts (and also uses) materials from courses taught by Tom Anderson, Doug Woos, Ellis Micheal, and Arvind Krishnamurthy, Michael Freedman and Kyle Jameson, Lorenzo Alvisi, and Ben Reed.  Thank you!

Copyright

Copyright Notice: These course materials, including, but not limited to, lecture notes, homeworks, and projects are copyright protected. You must ask me permission to use these materials.

I do not grant to you the right to publish these materials for profit in any form. Any unauthorized copying of the class materials is a violation of federal law and may result in disciplinary actions being taken against the student or other legal action against an outside entity. Additionally, the sharing of class materials without the specific, express approval of the instructor may be a violation of the University's Student Honor Code and an act of academic dishonesty, which could result in further disciplinary action. This includes, among other things, uploading class materials to websites for the purpose of sharing those materials with other current or future students.