Initial Publication Date: February 24, 2015

SIGCSE 2015 Workshop 2:

Teaching Parallel and Distributed Computing with MPI

7 PM - 10 PM, Wednesday March 4, 2015
Room 2502A

Instructors: Joel Adams (Calvin College), Dick Brown (St. Olaf College), and Libby Shoop (Macalester College)

Abstract: CS 2013 brings parallelism into the CS curricular mainstream. The Message Passing Interface (MPI) is a platform independent, industry-standard library for parallel and distributed computing (PDC). The MPI standard includes support for C, C++, and Fortran; third parties have created implementations for Python and Java. This hands-on workshop introduces MPI basics using parallel patterns, including the single program multiple data (SPMD) execution, send-receive message passing, master-worker, parallel loop, and the broadcast, reduction, scatter, gather, and barrier patterns. Participants will explore 12 short programs designed to help students understand MPI basics, plus longer programs that use MPI to solve significant problems. The intended audience is CS educators who want to learn about how message passing can be used to teach PDC. No prior experience with PDC or MPI is required; familiarity with a C-family language and the command-line are helpful but not required. The workshop includes: (i) self-paced hands-on experimentation with the working MPI programs, and (ii) a discussion of how these may be used to achieve the goals of CS2013. Participants will work on a remote Beowulf cluster accessed via SSH, and will need a laptop or a tablet with an SSH client (e.g., BitVise, iSSH), or a laptop with both a recent C/C++ compiler and MPI (e.g., OpenMPI or MPICH) installed. See


7-7:30 PM:

Introduction (Joel), 10 minutes

Slides: Teaching Distributed-Memory Parallel Concepts with MPI (Acrobat (PDF) 13.6MB Mar29 16)

Using the CDER and St. Olaf clusters (Dick), 10 minutes

Handout: Getting started guide

Introduction to the MPI patternlets (Libby), 10 minutes


Self-paced, hands-on exploration of MPI patternlets

Module: Patternlets in Parallel Programming

Break (take a break for refreshments at any time)


Introduction to MPI exemplars (Libby, Dick)


Self-paced, hands-on exploration of MPI exemplars

Module: Distributed Computing Fundamentals

Module: Drug Design Exemplar

dd_mpi.cpp -- Code for drug design in MPI/C++11 (download) ( 6kB Mar4 15)

dd_mpi_cder.cpp -- Code for drug design in MPI/C++99 (download) ( 6kB Mar4 15)


Discussion: Where to teach students about distributed computing parallelism? (Joel)



  1. Please fill out Our CSinParallel Project Survey for this Workshop. We greatly appreciate your help in evaluating our NSF-funded project.
  2. Please fill out SIGCSE 2015 Workshop Survey. SIGCSE uses your responses to make decisions about future workshops -- make your voice heard!


If you are interested, you can find more information about the rest of our modules from the modules link on the left menu of this page.