University of Washington Bothell Computing & Software Systems
This course closely examines programming methodology and middleware
used for parallel computing in grid and cloud systems, and develops
your programming skills high enough to design and build
application-specific parallel software with up-to-date grid and
cloud programming environments.
Topics covered include:
parallel-programming models: OpenMP, MPI, MapReduce, Spark
and other paradigm-oriented language tools,
programming patterns such as task and data parallelism,
parallel-job submission, management, and recovery.
For each of the topics, we will cover the background and
motivation, programming and design theory, and current technology
implementation in grid and cloud. Each lecture will advance your
parallel-programming knowledge and skills through in-class
discussions and laboratory hands-on programming exercises.
Five programming assignments are given:
shared-memory-based programming with a tool such as OpenMP,
message-passing-based programming with a tool such as MPI,
task-parallelized programming with MapReduce,
data-parallelized programming with Spark
the final project to parallelize an open problem with each
of MPI, MapReduce, Spark, and the MASS (multi-agent spatial