Course Syllabus
College of Engineering/Computer Engineering Department
CMPE 273-02, Enterprise Distributed Systems, Spring 2024
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 12-1:15p
Classroom: EE 337
Prerequisite: Java Programming.
Co-requisite(s): Concurrent enrollment in CMPE 272
Course Description
Introduction to application protocols for large scale distributed systems including object request brokers, asynchronous messaging, and Web services. 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:
- define the terminology and common ideas of distributed computing.
- explain fundamental ideas of distributed computing.
- demonstrate experience with distributed computing principles in modern applications.
- explain the challenges present in a distributed environment.
- explain the differences and trade-offs between various solutions for distributed systems problems.
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
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.
Late submission:
- There will be a 10% penalty for late submission on the Programming Project. For submission that are more than a week past the deadline, there will be a 50% late penalty.
- 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.
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/24 from 9:45-11:45am
There will be three in-class exams given in the semester (the last being the final exam).
Classroom Protocol
This is my first time teaching this class. The schedule listed below is tentative and may change based on student needs. Additionally, this is also my first time trying out DSLabs as a programming substrate for this course. We will learn about this system as part of the course :-).
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 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:
- A requirement is that you do not publish solutions on public GitHub repos.
- 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.
CMPE 273-02, Enterprise Distributed Systems, Spring 2024
Course Schedule
Week | Date | Topic/Theme | Reading(s) |
Pre-read |
|
||
1 | 1/25 | Introduction | |
2 | 1/30 | Remote Procedure Call |
|
2 | 2/1 | Replication |
|
3 | 2/6 | Time in a Distributed System |
|
3 | 2/8 | Causality |
|
4 | 2/13 | View changes and reconfiguration | |
4 | 2/15 | Distributed Recovery | |
5 | 2/20 | Caching and Consistency Models |
|
5 | 2/22 | More Consistency |
|
6 | 2/27 | Midterm I | |
6 | 2/29 | Consensus |
|
7 | 3/5 | Paxos Contd. |
|
7 | 3/7 | More Consensus | |
8 | 3/12 | Even more Consensus |
|
8 | 3/14 | RAFT Contd. and Update Propagation | |
9 | 3/19 | Byzantine Fault Tolerance | |
9 | 3/21 | Distributed Hash Tables |
|
10 | 3/26 | Eventually Consistent Systems | |
10 | 3/28 | Strongly Consistent Systems | |
4/2 | No Class: Spring break | ||
4/4 | No Class: Spring break | ||
11 | 4/9 | Sharding and Leases | |
11 | 4/11 | Memcache | |
12 | 4/16 | Midterm II | |
12 | 4/18 | Scalable Filesystems |
|
13 | 4/23 | Big Table (Guest Lecture: Dr. Ram Kesavan, Google) | |
13 | 4/25 | Spanner (Guest Lecture: Dr. Ram Kesavan, Google) | |
14 | 4/30 | Revisit the last parts of Spanner, Amazon DynamoDB (Guest Lecture: Dr. Ram Kesavan, Google) | |
14 | 5/2 |
Firestore (Guest Lecture: Dr. Ram Kesavan, Google) |
|
15 | 5/7 | Storing and serving tables: Iceberg (Part 1). (Guest Lecture: Sumedh Sakhdeo, Linkedin) |
|
15 | 5/9 | Storing and serving tables: Openhouse (Part 2) (Guest Lecture: Sumedh Sakhdeo, Linkedin) | |
5/20/24 | Final Exam and Wrapup | 9:45-11:45am |
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.