CSS 533: Distributed Computing
Autumn 2015

TTh 545-745pm at UW1-221

Prof. Munehiro Fukuda


Professor:

Munehiro Fukuda <mfukuda@u.washington.edu>, room UW1-331, phone 352-3459, office hours: TTh 500-540pm and 745-800pm

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) designing an online game with Java threads and sockets, (2) implementing distributed Java Spaces with JSCH (tentative), (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). Eight lab sessions are planned to get familiar with Java threads, Java sockets, JMS, RMI, CORBA, 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 15% 80s 2.5 - 3.4
Programming 3 15% 70s 1.7 - 2.4
Final Project 18% 60s or below 0.0 - 1.6
Midterm Exam 19%
Final Exam 19%

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: drs@uwb.edu, TDD: 425-352-5303, 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, we will move from the classroom to the UW1-320 linux laboratory where you will make a team of two students and work together on each programming exercise. You are supposed to independently turn in the source code and execution results in the laboratory or together with the following programming assignment work.

Group Discussions:

We are planning to have post-lecture group discussions where you will form a team of two students, discuss about given topics, and present the discussions in the classroom.

Topics covered and tentative 533 Autumn 2015 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
0 Oct 1 Lec 1: System Models Discussion 1 2  
1 Oct 6 Lec 2: OS Support Lab 1: Java Threads 7  
  Oct 8 Lec 3: Interprocess Communication Lab 2: Java Sockets 3.3.4, 3.4-3.4.2, 4 HW1: Java Threads and Sockets
2 Oct 13 Lec 4: Network Applications Discussion 2 3.4.1, 13.2.3  
  Oct 15 Lec 5: Group Communication Discussion 3 6.2  
3 Oct 20 Lec 6: Message Queues Lab 3: JSCH 6.4  
  Oct 22 Lec 7: Distributed Messaging Discussion 4 References on Spark, Storm, and Kafka  
4 Oct 27 Lec 8: Shared Memory Approach Discussion 5 6.5 HW1 due
HW2: Java Spaces
  Oct 29 Lec 9: Java Spaces and Related Techniques
Two-phase Commit, Replication, Checkpointing, and Distributed Hash
Discussion 6 6.5, 10.5.1, 17.1-17.3, 17.6, 18.3  
5; Nov 3 Lec 10: Remote Invocation (RPC and RMI) Discussion 7 5.1-5.4  
  Nov 5 Lec 11: Remote Invocation (RMI Continued) Lab 4: RMI 5.5  
6 Nov 10 Midterm exam in class   2, 3.3.4, 3.4-3.4.2, 4, 5, 6.2, 6.4-6.5, 7, 10.5.1, 13.2.3, 17.1-17.3, 17.6 and 18.3  
  Nov 12 Lec 12: Mobile Agents Lab 5: Mobile Agents
UWAgents Manual
1.5.1, 1.5.3, 2.3.1, 2.4.3, and 11.1.1 HW2 due
HW3: Mobile Agent Design
7 Nov 17 Lec 13: Web Services (Servlets)
CSS Speaker Series: Dr. Janusz Kowalik (The Architecture, Programming and Performance of the First Personal Supercomputer Intel Xeon Phi"
Discussion 8 9.1 Class at DISC 162
  Nov 19 Lec 14: Web Services (Servlets Cont'd and SOAP) Lab 6: Servlets 9.2, 9.7  
8 Nov 24 Lec 15: Distributed Objects(CORBA) Discussion 9 8.3  
  Nov 26 Holiday (No School)      
9 Dec 1 Lec 16: Distributed Objects(CORBA Continued) Lab 7: CORBA 8.3 HW3 due
Final Project: Muti-Tier Server
  Dec 3 Lec 17: Distributed Objects (Enterprise Java Beans and Fractal) Discussion 10 8.1-8.5  
10 Dec 8 Lec 18: Distributed Objects (EJB Continued) Lab 8: EJB 8.5  
  Dec 10 Final Project Presentation (First 24 students)      
11 Dec 15 Final Project Presentation (Last 24 students)      
  Dec 17 Final exam in class   1.5.1, 1.5.3, 2.3.1, 2.4.3, 8, 9.1-9.2, 9.7, and 11.1.1 Final project due