Course Syllabus

San José State University

Science/Computer Science
SE/CS 249, Distributed Systems, Section 1, Spring 2023

Course and Contact Information

Instructor:

Ben Reed

Office Location:

MH 213

Telephone:

(408) 924-5174

Email:

ben.reed@sjsu.edu

Office Hours:

4:30-6:00PM Monday

10-11:30AM Tuesday over zoom  https://sjsu.zoom.us/j/4077267356

11:30-1PM Wednesday

3:30-5PM Thursday over zoom  https://sjsu.zoom.us/j/4077267356 

Class Days/Time:

Monday & Wednesday/ 3:00-4:45

Classroom:

MH 223

Prerequisites:

 CS 149

Course Description

Current issues in operating systems, including multiprocessor systems and distributed computing, networks, security and performance. Case studies of current operating systems. 

Course Learning Outcomes (CLO)

Upon successful completion of this course, students will:

  1. Understand the terminology and common ideas of distributed computing.
  2. Be able to explain fundamental ideas of distributed computing.
  3. Gain experience with distributed computing principles in modern applications.
  4. Understand some of the challenges present in a distributed environment.
  5. Understand the differences between various solutions for distributed systems problems.

Required Texts/Readings

Textbook

No textbook.

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

Homework will be given, but will not be graded. It is intended for self-evaluation and will be the basis for future exams. I encourage students to work on homework in groups and discuss possible solutions together. We will take time at the beginning of each class to discuss any difficulties students have completing the homework.

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.

We will be doing individual programming assignments. A key part of evaluating the programming assignments is the in-class bake-offs. For that reason, there are no late submissions for assignments.  Individual programming assignments are not group projects. If students get help on assignments, even to resolve a stupid 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.html for more information. Even in open source, you cannot copy code from one open source project to another without attribution.

You will be expected to read the papers we are discussing before we discuss them in class. To encourage you to engage with the papers, 10% of your grade will be based on the Canvas discussion about the paper. To get credit for discussing a paper, you must ask a meaningful question or give a meaningful answer or observation on Canvas. Duplicate questions or answers will not be counted as a meaningful engagement. Short answers such as "Yes" or "I agree" or "I was thinking the very same thing" will not count as well.

The University Policy S16-9, Course Syllabi (http://www.sjsu.edu/senate/docs/S16-9.pdf) 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.

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

Grading Information

Determination of Grades

Grades will be calculated by averaging the percentages of the average of project grades, the individual project grades, the one mid-semester exam, and the final. Thus, the grade distribution is 30% individual projects, 30% exam 1, 30% final exam, 10% paper discussion.

This class uses minimum grading: you cannot get below a 50% on any submission or exam. For example, if you do not submit a solution explanation or your submission falls far short and only scores 35%, you will be assigned a 50% in the grade book. The minimum grading does not apply to cases of academic integrity.

 

Percentage

Grade

98 and above

A+

92-97

A

90-91

A-

88-89

B+

82-87

B

80-81

B-

78-79

C+

72-77

C

70-71

C-

68-69

D+

62-67

D

60-61

D-

59 and below

F

 

 

Classroom Protocol

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.

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 page at http://www.sjsu.edu/gup/syllabusinfo/” Make sure to review these policies and resources.

 

CS 249, Distributed Systems, Section 1, Fall 2019

Course Schedule

Week  Date Topic
1 1/25/2023 (proj assignment) gRPC: https://grpc.io/docs/languages/java/quickstart/
2 1/30/2023 (proj assignment) ADB: https://groups.csail.mit.edu/tds/papers/Attiya/TM-423.pdf
2 2/1/2023 FLP: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf
3 2/6/2023 Lamport clock: https://amturing.acm.org/p558-lamport.pdf
3 2/8/2023 Vector clocks: https://www.vs.inf.ethz.ch/publ/papers/VirtTimeGlobStates.pdf
4 2/13/2023 ADB bakeoff
4 2/15/2023 ZooKeeper: https://www.usenix.org/legacy/events/atc10/tech/full_papers/Hunt.pdf
5 2/20/2023 RSM: https://www.cs.cornell.edu/fbs/publications/SMSurvey.pdf
5 2/22/2023 Paxos: https://lamport.azurewebsites.net/pubs/paxos-simple.pdf
6 2/27/2023 BFT: https://www.cs.princeton.edu/courses/archive/fall17/cos418/papers/bft.pdf
6 3/1/2023 order & agreement: http://www.cs.cornell.edu/lorenzo/papers/sosp03.pdf
7 3/6/2023 ZooKeeper bakeoff
7 3/8/2023 (proj) chain replication: https://www.cs.cornell.edu/home/rvr/papers/OSDI04.pdf
8 3/13/2023 ZAB https://marcoserafini.github.io/papers/zab.pdf
8 3/15/2023 concurrent objects: https://lamport.azurewebsites.net/pubs/interprocess.pdf
9 3/20/2023 wait free synchronization: http://dx.doi.org/10.1145/114005.102808
9 3/22/2023 raft: https://web.stanford.edu/~ouster/cgi-bin/papers/raft-atc14
10 3/27&3/29 spring break
11 4/3/2023 chain bakeoff
11 4/5/2023 Exam 1
12 4/10/2023 DHT: https://www.cs.princeton.edu/courses/archive/fall17/cos418/papers/chord.pdf
12 4/12/2023 dynamo: https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
13 4/17/2023 chain bakeoff
13 4/19/2023 kafka: https://pages.cs.wisc.edu/~akella/CS744/F17/838-CloudPapers/Kafka.pdf
14 4/24/2023 GFS: https://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf
14 4/26/2023 map/reduce: https://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf
15 5/1/2023 big table: https://static.googleusercontent.com/media/research.google.com/en//archive/bigtable-osdi06.pdf
15 5/3/2023 ceph: https://www.ssrc.ucsc.edu/Papers/weil-osdi06.pdf
16 5/8/2023 Metastable Failures: https://sigops.org/s/conferences/hotos/2021/papers/hotos21-s11-bronson.pdf
16 5/10/2023 Testing Configuration Changes: https://tianyin.github.io/pub/ctest.pdf
17 5/15/2023 txn log bakeoff
Final Exam May 18 12:15-2:15pm



Course Summary:

Date Details Due