CSS 434: Parallel and Distributed Computing - Fall 2023
CSS 434: Parallel and Distributed Computing
Fall 2023
MW 330-530pm at UW2 131
Prof. Munehiro Fukuda
Professor:
Munehiro Fukuda
<mfukuda@uw.edu>,
UW1-271T, phone 352-3459,
office hours: MW 2:45-3:30pm
Course Description:
This course introduces the concepts and design of distributed
computing systems. Topics covered include message passing, remote
procedure calls, process management, migration, mobile agents,
distributed coordination, distributed shared memory, distributed file
systems, fault tolerance, and grid computing.
The first five weeks focus on the basic mechanism and the Java
programming techniques for message passing, process management,
and migration. We will use Java sockets, MPI: Message Passing
Interface, Java RMI, and UWAgent: a Java-based mobile agent
system the professor and his former CSS students have designed.
The last five weeks discuss advanced topics, where the
instructor will overview each topic; each student will review a
topic-related research paper; and all of us will be involved in
group discussions on those papers.
Four programming assignments are given: (1) A chat server design
with Java sockets, (2) A parallel-computing application
programming with MPI Java, (3) A functional/performance
comaprison between Java RMI and UWAgent, and (4) A distributed
file system implementation using Java RMI. Two lab sessions are
planned for each of the first three assignments to get familiar
with sockets, MPI, RMI, and mobile agents. Additionally, three new
lab sessions are scheduled for the last three weeks to understand
how to use distributed-computing tools: Spark, Hazelcast, and
Zookeeper.
Prerequisites:
CSS343.
Work Load and Grading:
Course Work |
Percentage |
Achievements |
Approximately Corresponding Numeric Grade |
Program 1 |
10% |
90s |
3.5 - 4.0 |
Program 2 |
10% |
80s |
2.5 - 3.4 |
Program 3 |
10% |
70s |
1.5 - 2.4 |
Program 4 |
10% |
60s |
0.7 - 1.4 |
Lab. Work |
1% x 9 = 9% |
Weekly surveys |
2% x 4 = 8% |
Presentation |
3% |
Midterm Exam |
20% |
Final Exam |
20% |
Textbooks:
75% of the lecture covers the following textbook, while the rest
focuses on some advanced topics such as MPI, mobile agents, and some
research-oriented topics. To help your understanding, I recommend
you should buy this textbook.
-
Distributed Systems: Concepts and Design, 5th Edition,
George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair,
Addison-Wesley Publishers, 2012
Some Programming Textbooks:
The following books and manuals are useful for system, network, and MPI programming.
-
Parallel Programming with MPI,
Peter S. Pacheco,
Morgan Kaufmann,
1997.
-
Java in Distributed Systems: Concurrency, Distribution and Persistence,
Marko Boger,
Wiley,
2001.
-
Java Network Programming,
3rd Edition,
Elliotte Rusty Harold
O'Reilly
2009.
-
Getting Started with Hazelcast, 2nd Edition, Mat Johns, PACKT Publishing, July 2015.
-
Learning Spark - Lightning-Fast Data
Analysis, Holden Karau, Andy Konwinski, Patrick Wendell
and Matei Zaharia, 2015.
-
ZooKeeper Distributed Process Coordination, Flavio Junqueira and Benjamin Reed, O'Reiilly, 2016
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.
- Lab work: can be done in a team with your
classmates. However, each student must submit source code and
execution outputs individually.
- Weekly Survey: must be done in a team.
Any programming homework is due at 11:59pm on its given due date and must
be submitted to Canvas. Once the submission window gets closed, no
late submission is accepted even through email (firm). 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 yor 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.
Each weekly survey report is due at the beginning of the
class hours on its given due date and must be submitted to Canvas
in a group.
Once the submission window gets closed, no late submission is
accepted even through email (firm). The submission may be done by
each group representative. The submission cannot be postponed at all,
as it is a group submission.
To request academic accommodations due to a disability, please contact
Disability Resources for Stuents (DRS) in UW1-080,
(email: uwbdrs@uwb.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 DSS counselor
contact me and we can discuss accommodations.
The class follows the religious accomodation policy. Please
check
Office of the University Registrar's website
.
Course Goals:
The overall goal of CSS 434, "Parallel and Distributed Computing" includes:
- To learn fundamental concepts that are used in and applicable to a
variety of distributed computing applicaitons,
- To realize fundamental concepts in four programming assignments:
a chat server, a parallel-computing application, a mobile agent, and
a distributed file system, and
- To improve your ability of reviewing, grasping, and comparing the
key idea of research papers
To strengthen your understanding of fundamental concepts, you are
recommended to solve the problems that are given on the final page of
each lecture slide, (while some of them will be solved in class
discussions.).
To survey esearch/commertial systems, you must read research papers
every week, summarize your work holistically in your own words (rather
than cut and paste phrases from what you read), respond to given
questions, and prepare for an in-class presentation.
Finally, you need to use Linux machines (cssmpi1h.uwb.edu -
cssmpi12h.uwb.edu) for testing and evaluating the performance of your
distributed program. Therefore, as with most technical courses,
besides ability and motivation, it takes time to learn and master the
subject. Expect to spend an additional 10 to 15 hours a week outside
of class time on the average.
Assignments:
This is a research-flavored course. Each assignment specificaiton only
gives you a topic and a guideline in order to work on the assignment.
The answer and the quality of assignment work just depend on your
enthusiuasm for assignment work. Therefore, there are no specific key
answers.
- Program 1 (pdf, word):
learns how to use Java-based TCP communication through a design
of chat client and server program.
- Program 2 (pdf, word): exercises how to write a parallel-computing
application using MPI Java.
- Program 3
(pdf, word):
compares RMI and mobile agenets in terms of programmability and
performance. Click here
to download the UWAgent manual.
- Program 4 (pdf, word): designs and implements a very simple
distributed file system.
- Survey 1-4: gives each group
a couple of research papers every week. Each group will summarize
their understanding in a weekly report. Furthermore, they will give a
30-minute presentation in turn (just one time through the quarter).
Please read assignment.html to
understand the environment you use for assignments and the
submission/grading procedures.
Laboratory Work:
We have nine laboratory assignments in that we will understand the
usage of and programming with Java sockets, MPI, mobile agents, Spark,
Hazelcast, and Zookeeper. They are intended to mitigate your learning
curve of new programming paradigms and ease your programming work.
The grading is based on your active participation.
- Lab Work 1a: is a
hands-on exercise for Java sockets. (1% of an entire grade)
- Lab Work 1b: is a hands-on
exercise for Java object serialization and deserialization. (1% of an
entire grade)
- Lab Work 2a: is a hands-on
exercise for setting up and running MPI programs. (1% of an entire grade)
- Lab Work 2b: is a hands-on
exercise for MPI programming. (1% of an entire grade)
- Lab Work 3a: is a hands-on
exercise for RMI. (1% of
an entire grade)
- Lab Work 3b: is a hands-on
exercise for distributed computing with mobile agents. (1% of an entire
grade)
- Lab Work 4: is a hands-on
exercise for distributed shared hashmap with Hazelcast. (1% of an entire
grade)
- Lab Work 5: is a hands-on
exercise for data streaming with Spark. (1% of an entire
grade)
- Lab Work 6: is a hands-on
exercise for job coordination with Zookeeper. (1% of an entire
grade)
Topics covered and tentative 434 spring 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 |
Lab and Discussions |
Chapters |
Reading |
Assignment |
0 |
Sep 27 |
System Models |
|
2 |
pp37-79 |
|
1 |
Oct 2 |
Networking |
|
3 (3.3 - 3.3.4, 3.4.1) |
pp89-98 pp106-111 |
|
|
Oct 4 |
Interprocess Communication |
Lab Work 1a (Sockets) |
4 (4.1 - 4.3.2) |
pp145-164 |
Program 1 assigned |
2 |
Oct 9 |
Group Communication and MPI |
Lab Work 1b (Sockets) |
4.4, 4.6, 15.4 |
pp169-174, pp178-180 pp646-659 |
|
|
Oct 11 |
|
Lab Work 2a (MPI) |
|
|
|
3 |
Oct 16 |
Remote Invocation |
Lab Work 2b (MPI) |
5 |
pp185-228 |
|
|
Oct 18 |
|
Lab Work 3a (RMI) |
5 |
pp185-228 |
Program 2 assigned
Program 1 due at 11:59pm
|
4 |
Oct 23 |
Operating System Support |
|
7 |
pp279-334 |
|
|
Oct 25 |
Process Migration |
|
7.4.2 and non-textbook contents |
pp289-291 |
|
5 |
Oct 30 |
|
Lab Work 3b (Agents) |
7.4.2 and non-textbook contents |
pp289-291 |
|
|
Nov 1 |
Midterm exam in class |
|
2 - 6 |
pp37-98, 106-111, 145-164, 169-174, 178-228, 279-334, and 646-659 |
|
6 |
Nov 6 |
Time and Global States |
|
14 |
pp595-628 |
Program 3 assigned
Program 2 due at 11:59pm
|
|
Nov 8 |
|
Survey 1 due at 3:30pm |
|
|
Talk by Groups 1 and 5 |
7 |
Nov 13 |
Distributed Shared Memory |
|
6.5 |
pp262-274 |
|
|
Nov 15 |
|
Survey 2 due at 3:30pm
Lab Work 4a (Hazelcast) |
|
|
Talk by Groups 2 and 6 |
8 |
Nov 20 |
Distributed File Systems |
|
12 16.2.1-16.2.2 |
pp521-564 pp683-690 |
|
|
Nov 22 |
|
Survey 3 due at 3:30pm
| |
|
Talk by Groups 3 and 7
Program 4 assigned
Program 3 due at 11:59pm
|
9 |
Nov 27 |
Distributed Transactions and Replication |
|
17.1-17.3 18 |
pp727-740 pp765-816 |
|
|
Nov 29 |
|
Survey 4 due at 3:30pm
Lab Work 4b (Spark) |
|
|
Talk by Groups 4 and 8 |
10 |
Dec 4 |
Job Management in Grid/Cloud
| |
No corresponding chapters |
|
|
|
Dec 6 |
Wrap-up |
Lab Work 4c (ZooKeeper) |
|
|
|
11 |
Dec 11 |
Final exam in class |
|
6.5, 12, 14, 16.2.1-16.2.2, 17.1-17.3, 18 and grid computing |
pp262-274, 521-564, 595-628, 683-690, 727-740, and 765-816 |
|
|
Dec 13 |
Program 4 Deadline |
|
|
|
Program 4 due on at 11:59pm |