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.
The enhanced curriculum equips CS students with skills that are highly sought after by the computing industry. The planned outreach activities help broaden the participation of female and Hispanic student groups in STEM education. The free teaching modules and the active dissemination encourage the building of a community of educators interested in introducing parallel computing in the undergraduate curriculum. Finally, the developed teaching material is contributing to ACM/IEEE's model CS undergraduate curriculum.