Tutorial 302: Modernizing the CS Introductory Sequence with Parallel and Distributed Computing (and some AI)
Parallel and distributed computing (PDC) has become pervasive in all aspects of computing, and thus it is essential that students include parallelism and distribution in the computational thinking that they apply to problem solving, from the very beginning. Computer science education is still teaching a 20th century model of algorithmic problem solving. Sequence, branch, and loop are taught in our early courses as the only organizing principles needed for algorithms, and we invest considerable time in showing how best to sequentially process large volumes of data. All computing devices that students use currently have multiple cores as well as a GPU in many cases. Most of their favorite applications use multiple cores and distributed resources. Often concurrency offers simpler solutions than sequential approaches. However, we are still teaching students to solve problems using sequential thinking. In this tutorial we overview key PDC concepts and provide examples of how they may naturally be incorporated in early computing classes. We introduce plugged and unplugged curriculum modules that have been successfully integrated in existing computing classes at multiple institutions. We also discuss recent efforts at integrating AI methods, including LLMs, into introductory classes. In addition, we highlight other CDER activities for integration of PDC and AI into undergraduate computing curricula.