CSS 533: Distributed Computing
Spring 2025

TTh 545-745pm

Prof. Munehiro Fukuda


Professor:

Munehiro Fukuda <mfukuda@u.washington.edu>, room UW1-136, phone 352-3459, office hours: TTh at 7:45-8:30pm (@ UW1-220)

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.

Five 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.

In-class group presentations are scheduled to compare two distinct commercial or research systems, both based on the same distributed-computing concepts. The comparison is carried out either by decent survey or by application development work.

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%
Group Presentation 11.5%
In-Class Discussions/Presentation Review 4.5%
Midterm Exam 12%
Final Exam 12%

Textbooks (Optional):

  1. CDK5, Distributed Systems: Concepts and Design,, 5th Edition, George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair, Addison-Wesley Publishers, 2012
  2. Distributed Systems, 4th Edition, Maaten van Steen and Andrew S. Tanenbaum, 2023

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, 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-071, (email: uwbdrs@uw.edu, Phone: 425-352-5426). If you have a documented disability on file with the DRS 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

My lectures are intended for the sake of those who actively participate in the class, thus not to be recorded. In emergency cases, (e.g., sickness, sudden business event, etc.), if you wish to watch Panopto videos, please email me in advance. Note that Zoom won't be used.

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 post-lecture laboratory or discussion sessions. For each laboratory session, you will use cssmpi1.uwb.edu - cssmpi24.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 work.

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 sharing the discussions in the class.

Group Presentations:

In week 10 (and potentially week 9 if we have a larger class), 12-16 groups, each with 2(-3) students will give their 12-minute presentation (followed by a 3-minute Q and A) on their comparative study on a pair of commercial/well-known distributed systems, both based on the same distributed-computing concepts. The comparative work must take one of the following two options.
  1. Survey Wrok: surveys the key design techniques and implementation of two systems, compares their features, and clarifies their pros and cons. The distributed concepts include message passing, data streaming, distributed shared space and cache, fault tolerance, and distributed file systems.
  2. Programming Comparison: codes an application on top of two distributed systems and compares their execution performance and programmability. Spring 2025 focuses on gRPC versus RMI. An application should be a simple but meaningful program such as weather data retrievals.

Topics covered and tentative CSS533 Spring 2025 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 CDK5 Chapters Assignment
1 Apr 1 Lec 1: System Models Discussion 1 2  
  Apr 3 Lec 2: OS Support Lab 1: Java Threads 7 HW1: Java Threads, Sockets, and Secured Shell
2 Apr 8 Lec 3: Interprocess Communication Lab 2: Java Sockets 3.3-3.4  
  Apr 10 Lec 4: Group Communication Lab 3: JSCH 4.4, 4.6, 6.2  
3 Apr 15 Lec 5: Message Queues Discussion 2 6.3, 6.4  
  Apr 17 Lec 6: Distributed Streaming (STORM) Lab 4: Storm References on Spark, Storm, and Kafka HW2: Storm
HW1 due at 11:59pm
4 Apr 22 Lec 7: Remote Execution (RPC, RMI) Lab 5: RMI 5
  Apr 24 Lec 8: Web Services (Servlets, SOAP, REST) Lab 6: gRPC 9  
5 Apr 29 Lec 9: Distributed Objects (EJB) Discussion 3 8  
  May 1 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 May 6 Midterm exam in class   Covers lectures 1 - 9  
  May 8 Lec 11: Distributed Shared Space, Cache, and Hash
Discussion 4 6.5  
7 May 13 Lec 12: Hazelcast Lab 8: Hazelcast 1 References on Hazelcast  
  May 15 Lec 13: Fault Tolerance (Atomicity and Replication) Lab 9: Hazelcast 2 17.3, 18 HW4: Hazelcast
HW3 due at 11:59pm
8 May 20 Lec 14: Fault Tolerance (Checkpointing and Consensus Algorithms) Discussion 5 17.6, 15  
  May 22 Lec 15: ZooKeeper lab 10: ZooKeeper References on ZooKeeper  
9 May 27 Lec 16: Distributed File Systems (File Consistency and Distribution) Discussion 6 12  
  May 29 Lec 17: Distributed File Systems (Parallel File Transfer) Discussion 7 No corresponding chapters HW5: ZooKeeper
HW4 due at 11:59pm
10 Jun 3 Group Presentation (Survey Work)      
  Jun 5 Group Presentation (Programming Comparison)      
11 Jun 10 No class      
  Jun 12 Final exam in class   Covers lectures 10 - 17 HW5 due at 11:59pm