SIGCSE '91 Proceedings of the twenty-second SIGCSE technical symposium on Computer science education
Panel: parallel computing in the undergraduate computer science curriculum
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
Teaching empirical performance analysis of parallel programs
SIGCSE '92 Proceedings of the twenty-third SIGCSE technical symposium on Computer science education
Experiences in teaching parallel computing—five years later
ACM SIGCSE Bulletin
Using MPI (2nd ed.): portable parallel programming with the message-passing interface
Using MPI (2nd ed.): portable parallel programming with the message-passing interface
Teaching parallel computing to science faculty: best practices and common pitfalls
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Principles of Concurrent and Distributed Programming (2nd Edition) (Prentice-Hall International Series in Computer Science)
Patterns for programming in parallel, pedagogically
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Using OpenMP: Portable Shared Memory Parallel Programming (Scientific and Engineering Computation)
Using OpenMP: Portable Shared Memory Parallel Programming (Scientific and Engineering Computation)
Concurrent CS: preparing students for a multicore world
Proceedings of the 13th annual conference on Innovation and technology in computer science education
A short unit to introduce multi-threaded programming
Journal of Computing Sciences in Colleges
Teaching parallel computing: new possibilities
Journal of Computing Sciences in Colleges
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
A breadth-first course in multicore and manycore programming
Proceedings of the 41st ACM technical symposium on Computer science education
Introducing concurrency in CS 1
Proceedings of the 41st ACM technical symposium on Computer science education
Memory models: a case for rethinking parallel languages and hardware
Communications of the ACM
Methods of creating student cluster competition teams
Proceedings of the 2011 TeraGrid Conference: Extreme Digital Discovery
Parallel programming: design of an overview class
Proceedings of the 2011 ACM SIGPLAN X10 Workshop
A down-to-earth educational operating system for up-in-the-cloud many-core architectures
ACM Transactions on Computing Education (TOCE)
Hi-index | 0.00 |
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.