CSS 533: Distributed Computing
Spring 2024

MW 545-745pm at UW2 340

Prof. Munehiro Fukuda


Professor:

Munehiro Fukuda <mfukuda@u.washington.edu>, room UW1-271T, phone 352-3459, office hours: MW 7:45-8:30pm @ UW2-340

Course Description:

This course builds on knowledge of advanced programming methodologies in distributed computing. Topics covered include message passing, indirect communication, remote method invocation, distributed objects, multi-tier server-side programming, peer-to-peer systems, distributed synchronization, distributed check-pointing, and replica management.

For each of the topics, we will cover the background and motivation; design approach and philosophy, current technology implementations, in-class discussions and laboratory hands-on programming exercises.

Four programming assignments are given: (1) coding an online game with Java threads, sockets, and secure shell, (2) developing a data-streaming application with Apache Storm, (3) implementing a mobile-agent execution platform with RMI, (4) comparing centralized and remote executions of inverted-indexing program with Hazelcast, and (5) developing a fault-tolerant master-worker framework with ZooKeeper. 10 lab sessions are planned to get familiar with Java threads, Java sockets, JSCH, Storm, RMI, Servlets, mobile agents, Hazelcast, and ZooKeeper.

Prerequisites:

You must be an MSCSSE or MSCSE student.

Work Load and Grading:

Course Work Percentage Achievements Approximately Corresponding Numeric Grade
Programming 1 12% 90s 3.5 - 4.0
Programming 2 12% 80s 2.5 - 3.4
Programming 3 12% 70s 1.7 - 2.4
Programming 4 12% 60s or below 0.0 - 1.6
Programming 5 12%
Survey Presentation 12%
Midterm Exam 12%
Final Exam 12%
Discussions/Presentation Review 4%

Textbooks:

  1. Distributed Systems: Concepts and Design,, 5th Edition, George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair, Addison-Wesley Publishers, 2012

References:

Policies:

If you want to communicate with me through email, please email me at mfukuda@uw.edu with its title starting with [css533]. No Canvas email. Please note that I won't respond to Canvas email.

All programming assignments are to be done independently. Any collaboration of work will result in severe penalty. You may discuss the problem statement and any clarification with each other, but any actual work to be turned in, must be done without collaboration.

Any programming assignment is due at 11:59pm on the due date and must be submitted to Canvas. Once the submission window gets closed, no late submission is accepted even through email (firm). Please note: the closer the deadline is approaching, the slower Canvas responds to you. So, don't plan on a last-minute submission. The submission may be postponed only in emergencies such as accidents, sickness, sudden business trips, and family emergencies (not including planned events such as a wedding), in which case you may turn in your homework late with a written proof. No make-up exams will be given except under exceptional circumstances. Barring emergencies, I must be informed before the exam.

To request academic accommodations due to a disability, please contact Disability Resources for Services (DRS) in UW1-080, (email: uwbdrs@uw.edu, Phone: 425-352-5307 and FAX: 425-352-5114). If you have a documented disability on file with the DSS office, please have your DRS counselor contact me and we can discuss accommodations.

The class follows the religious accomodation policy. Please check Office of the University Registrar's webpage

All my lectures and whiteboard messages will be recorded by Panopto and will be broadcast through its webcast. If you are sick or on a business trip, you may join the webcast at real time or watch Panopto video clips later. However, there are no plans on Zoom meetings or recordings as this class is not hybrid. Also note that there are eight in-class discussion/presentation events, each counted as 0.5pts of your grade, so that video watching is not sufficient to get 4.0.

Course Goals:

The overall goal of CSS 533, "Distributed Computing" includes:
  1. Examine theoretical programming models and patterns in distributed-system design.
  2. Use contemporary programming tools for implementing distributed-computing applications.
  3. Discuss and compare distributed algorithms such as distributed synchronization, check-pointing, and replication.
  4. Examine different distributed-system middleware such as distributed objects, web services, and peer-to-peer systems.
  5. Design and develop a multi-tier server-side application.

Assignments:

Five programming assignments are given. Please read assignment.html to understand the environment you use for assignments and the submission/grading procedures.

Laboratory Work:

Each class includes a post-lecture laboratory or a discussion session. For each laboratory session, you will use cssmpi1h.uwb.edu - cssmpi24h.uwb.edu and work together with your classmates. However, each lab work (including the source code and execution results) must be submitted independently as part of your following programming assignment, (i.e., HW1, HW2, HW3, HW4, and HW5).

Group Discussions:

We are planning to have post-lecture group discussions where the class will be divided into several groups, each discussing about given topics and presenting the discussions in the class. Your active participation in each discussion session is counted as 0.5pts of your grade.

Survey Presentation:

Note that the link will be made available after day 1. In week 10 (and potentially week 9 if we have a larger class), 12-13 groups, each with 2-3 students will give their 15-minute presentation (followed by a 5-minute Q and A) on what they have surveyed. Each group picks up two commertial, open-source, or reseaerch systems in the same distributed-computing concept, surveys their implementations and underlying techniques, compares their features, clarifies their pros and cons, and summarizes the study in a 15-minute talk.

Topics covered and tentative 533 Spring 2024 schedule:

Note that this is an approximate ordering of topics. Chapters will take about the allotted time and not all sections in all chapters are covered.

Week Date Topics Sessions Book Chapters Assignment
1 Mar 25 Lec 1: System Models (p1-7)
Lec 2: OS Support(p1, p3-4, p6-8, p10-15)
Discussion 1
Lab 1: Java Threads
2
7
 
  Mar 27 Lec 3: Interprocess Communication Lab 2: Java Sockets 3.3-3.4 HW1: Java Threads, Sockets, and Secured Shell
2 Apr 1 Lec 4: Group Communication Lab 3: JSCH 4.4, 4.6, 6.2  
  Apr 3 Lec 5: Message Queues Discussion 2 6.3, 6.4  
3 Apr 8 Lec 6: Distributed Streaming (STORM) Lab 4: Storm References on Spark, Storm, and Kafka  
  Apr 10 Lec 7: Remote Execution (RPC, RMI) Lab 5: RMI 5 HW2: Storm
HW1 due at 11:59pm
4 Apr 15 Lec 8: Web Services (Servlets, SOAP) Lab 6: Servlets 9  
  Apr 17 Lec 9: Distributed Objects (EJB) Discussion 3 8  
5 Apr 22 Midterm exam in class   Covers lectures 1 - 9  
  Apr 24 Lec 10: Mobile Agents Lab 7: Mobile Agents
UWAgents Manual
1.5.1, 1.5.3, 2.3.1, 2.4.3, and 11.1.1 HW3: Mobile Agent
HW2 due at 11:59pm
6 Apr 29 Lec 11: Distributed Shared Space, Cache, and Hash
Discussion 4 6.5  
  May 1 Lec 12: Hazelcast Lab 8: Hazelcast 1 References on Hazelcast  
7 May 6 Lec 13: Fault Tolerance (Atomicity and Replication) Lab 9: Hazelcast 2 17.3, 18  
  May 8 Lec 14: Fault Tolerance (Checkpointing and Consensus Algorithms) Discussion 5 17.6, 15 HW4: Hazelcast
HW3 due at 11:59pm
8 May 13 Lec 15: ZooKeeper lab 10: ZooKeeper References on ZooKeeper  
  May 15 Lec 16: Distributed File Systems (File Consistency and Distribution) Discussion 6 12  
9 May 20 Lec 17: Distributed File Systems (Parallel File Transfer) Discussion 7 No corresponding chapters  
  May 22 Survey Presentation     HW5: ZooKeeper
HW4 due at 11:59pm
10 Jun 27 Holiday      
  May 29 Survey Presentation      
11 Jun 3 No class      
  Jun 5 Final exam in class   Covers lectures 10 - 17 HW5 due at 11:59pm