CSS 533: Distributed Computing
Spring 2019

TTh 545-745pm at UW1-060

Prof. Munehiro Fukuda


Professor:

Munehiro Fukuda <mfukuda@u.washington.edu>, room UW1-271T, phone 352-3459, office hours: TTh 500-540pm and 7:45-8:10pm

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, and (4) designing a multi-tier server-side application with Servlets and Enterprise Java Beans (EJB). Nine lab sessions are planned to get familiar with Java threads, Java sockets, JSCH, JMS, Storm, RMI, mobile agents, Servlets, and EJB.

Prerequisites:

None

Work Load and Grading:

Course Work Percentage Achievements Approximately Corresponding Numeric Grade
Programming 1 14% 90s 3.5 - 4.0
Programming 2 14% 80s 2.5 - 3.4
Programming 3 14% 70s 1.7 - 2.4
Final Project 18% 60s or below 0.0 - 1.6
Survey Presentation 10%
Midterm Exam 15%
Final Exam 15%

Textbooks:

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

References:

Policies:

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 homework is due at the beginning of class on the due date. 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-170, (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.

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:

Four 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 - cssmpi8.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 you will form a team of 3-4 students, discuss about given topics, and present the discussions in the classroom.

Survey Presentation:

In weeks 9 and 10, the class will discuss about distributed file systems (DFS) and fault tolerance. While the lectures cover the basic concepts and their trends, each pair of students are supposed to pick up one representative system from either DFS or fault tolerant systems (as shown below), to study the details of their implementation (but not their superficial specifications), and to present a summary of your survey work in the class.
  1. File Management Systems:
  2. Fault Tolerant Systems:

Topics covered and tentative 533 Spring 2019 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 Apr 2 Lec 1: System Models Discussion 1 2  
  Apr 4 Lec 2: OS Support Lab 1: Java Threads 7  
2 Apr 9 Lec 3: Interprocess Communication Lab 2: Java Sockets 3.3.4, 3.4-3.4.2, 4 HW1: Java Threads, Sockets, and Secured Shell
  Apr 11 Lec 4: Network Applications Lab 3: JSCH 3.4.1, 13.2.3  
3 Apr 16 Lec 5: Group Communication Discussion 2 6.2  
  Apr 18 Lec 6: Message Queues Lab 4: JMS/Active MQ 6.4  
4 Apr 23 Lec 7: Distributed Streaming Lab 5 Storm References on Spark, Storm, and Kafka HW1 due
HW2: Storm
  Apr 25 Lec 8: Remote Invocation (RPC and RMI) Discussion 3 5.1-5.4  
5 Apr 30 Lec 9: Remote Invocation (RMI Continued) Lab 6: RMI 5.5  
  May 2 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  
6 May 7 Midterm exam in class   Covers chapters in weeks 1 - 5  
  May 9 Lec 11: Web Services (Servlets)
Discussion 4 9.1 HW2 due extended to
May 12, 11:59pm
HW3: Mobile Agent
7 May 14 Lec 12: Web Services (Servlets Cont'd and SOAP) Lab 8: Servlets 9.2, 9.7  
  May 16 Lec 13: Distributed Objects (Enterprise Java Beans and Fractal) Discussion 5 8.1-8.5  
8 May 21 Lec 14: Distributed Objects (EJB Continued) Lab 9: EJB 8.5  
  May 23 Lec 15: Distributed File Systems (Cliet/Server Initiated Invalidation) Discussion 6 12 HW3 due extended to
May 25 at 11:59pm
Final Project: Multi-Tier Server
9 May 28 Survey Presentation on File Management   Amazon S3
PVFS
HDFS
MS Azure
Praveena Avula, Jignasha Borad
Archit Gupta, Ploypaphat Saltz
Nora Wang, Yuna Guo
Anukriti Singh, Neha Kumari
  May 30 Lec 16: Fault Tolerance (Atomic Transaction, Replica Management, Check Pointing) Discussion 7 17, 18  
10 Jun 4 Survey Presentation on Fault Tolerance   Google Cloud
Spark
Storm/Zookeeper
HT-Condor
Christopher Ijams, Max Weiss
Soheli Sultana, Sandy Chau
Justin Gilroy, Chris Lee
Savitha Kumari, Nasser Alghamdi
  Jun 6 Final Project Presentation (First 12 students)      
11 Jun 11 Final Project Presentation (Last 12 students)     Final project due
  Jun 13 Final exam in class   Covers chapters in weeks 6 - 10