Breadth in depth: a 1st year introduction to parallel programming

  • Authors:
  • Thomas R. Gross

  • Affiliations:
  • ETH Zurich, Zurich, Switzerland

  • Venue:
  • Proceedings of the 42nd ACM technical symposium on Computer science education
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

There is a debate on when and how to teach parallel programming in the undergraduate curriculum. We try to structure the debate along a number of dimensions and then present the solution that we adopted for an engineering-oriented curriculum. We added an introduction to parallel programming to the list of mandatory classes in the 2nd semester. The class exposes students to three styles of parallel programming: threads with shared memory, CSP-style message passing, and OpenMP-based parallel programming. Within these models, the class aims to focus the student's attention on communication as the key issue in parallel programs. Explicit communication (or their absence) causes correctness problems, implicit communication (e.g., when accessing shared data in different threads) forces the student to understand when updates are globally visible. An introductory class early in the undergraduate curriculum has a number of benefits and disadvantages, which are discussed in this paper. A preliminary evaluation after two editions of this course indicates that the design goals are met but also points to several issues that other institutions may want to consider.