Modules for introducing threads

Included as Chapter 4 in Prasad, Gupta, Sussman, and Weems ed. Topics in parallel and distributed computing: Introducing concurrency in undergraduate courses, Morgan Kaufmann, pages 59-82, 2015.

Materials related to this chapter:


Abstract:

This chapter presents a pair of modules for introducing students to parallel programming. Each module is built around an exploratory exercise to parallelize an application, which can be used in lab or lecture. They illustrate fundamental concepts such as speedup, race conditions, privatizing variables, and load balance. Variations teach students about explicit threading (in C, C++, or Java) and OpenMP (in C/C++).