Overview
The widespread deployment of multicore-based computer systems over the last decade has brought about drastic changes in the software and hardware landscape. However, most undergraduate computer science (CS) curricula have not embraced the pervasiveness of parallel computing. In their first years, CS undergraduates are typically exclusively trained to think and program sequentially. However, too firm a root in sequential thinking can be a non-trivial barrier for parallel thinking and computing. Thus, there is an urgent need to teach multicore and parallel computing concepts earlier and often in CS programs.
This project addresses the rapidly widening gap between highly parallel computer architectures and the sequential programming approach taught in traditional CS courses. It proposes to systematically integrate parallel computing into current undergraduate curricula. Specifically, its goals are to develop course modules and projects for introducing parallel computing concepts in several early computer science courses, to design an upper-level multicore programming course that serves as a capstone for parallel computing concepts, and to promote this model by making all relevant material freely available.