CSS 533: Distributed Computing
Spring 2023

TTh 545-745pm

Prof. Munehiro Fukuda


Professor:

Munehiro Fukuda <mfukuda@u.washington.edu>, room UW1-271T, phone 352-3459, office hours: TTh 5:15-5:45pm (@ UW1-271T) and 7:45-8:15pm (@ UW2-305)

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.5% 90s 3.5 - 4.0
Programming 2 12.5% 80s 2.5 - 3.4
Programming 3 12.5% 70s 1.7 - 2.4
Programming 4 12.5% 60s or below 0.0 - 1.6
Programming 5 12.5%
Survey Presentation 12.5%
Midterm Exam 12.5%
Final Exam 12.5%

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

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 cssmpi1h.uwb.edu - cssmpi12h.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 presenting the discussions in the class.

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