Parallel computing has moved from being a niche technology to underlying most computing activities, including multi-core processing, cloud, distributed, and GPU-accelerated computing. Traditional, sequential programming skills alone are no longer sufficient for programmers. Learning a broad-based skill set in parallel and distributed computing (PDC) within Computer Science is paramount.
PDC emphasizes both performance and sharing. Introducing the concepts and practices that improve performance through parallelism and that enable the sharing of information and resources through distributed computing provides students with necessary skills. However, most undergraduate computer science (CS) programs do not teach parallel computing concepts, and CS undergraduates are typically exclusively trained to think and program sequentially. The gap is a widening rapidly between the emerging highly parallel computer architectures and the sequential programming approach taught in traditional CS undergraduate curriculums. Undergraduate programs should train the CS students to think parallel and code parallel from the beginning of the curriculum. IEEE/ACM joint taskforce on Computing Curricula has recommended integration of PDC topics in undergraduate curriculum as vital to comprehensive CS education.
Primarily, there are two models of PDC education in undergraduate program: single PDC course and threading PDC topics into traditional CS courses. The single course approach is typically offered as an elective upper division class in undergraduate curriculum. Most institutions do not offer such dedicated course because faculty expertise in this area is not always available and adding extra PDC course to a full curriculum is challenging. While few colleges and universities have added PDC course, the computing academic community has been slow to integrate PDC as part of the entire curriculum. The challenges for integrating PDC into CS curriculum are significant for most institutions because : a) lack of faculty to teach PDC, b) lack of teaching resources, c) room to spare in CS curriculum. Typically, adding new content to a course may require removing existing content due to the density of topics covered in a typical CS course. However, many opportunities exist that apply “thinking in parallel” to traditional topics. The objective of our effort is to create a collaborative repository of readily available PDC modules that can be easily integrated in existing CS courses without much effort required by the instructors.