This collaborative project between St. Olaf College and Macalester College is developing a collection of ten learning modules with supporting software in the area of parallel computing. For the foreseeable future, the dominant factor in CPU hardware performance will be the number of cores per CPU package, not speedup within an individual core. Thus, today's dual- and quad- multicore processors will soon give way to CPUs with dozens, and eventually thousands, of cores. To prepare today's computer science students for the manycore world that will be the reality during their careers, parallel computational concepts and programming must achieve a new prominence in the computer science curriculum. The modules developed in this project range in sophistication from the first-year introductory level to the fourth-year advanced technical elective level. The modules begin with Hadoop and progress to OpenMP and MPI. The modularity and varying complexity of the modules allows institutions to adapt them to their curriculum from a single course to a complete vertical curricular integration. The modules are supported by a selection of parallel platform packages, including software and documentation, that enable the modules to be used on a variety of hardware platforms. The modules are being freely disseminated through an interactive website, the National Digital Science Library, and through a workshop at the annual meeting of the ACM Special Interest Group for Computer Science Education. The project includes a comprehensive assessment and evaluation plan coordinated by an independent evaluator.
The industry shift to multicore computer design beginning in 2004, together with the simultaneous rise of cloud computing and its effective applications throughout the US economy, created a pressing crisis for Computer Science (CS) education. CS undergraduate curricula have generally included few topics in parallel and distributed computing (PDC). But parallel computing now becomes essential for software development for today’s multicore computers (‘cores’ are individual circuits for carrying out program instructions); and distributed computing forms the foundation for web services in the cloud. Thus, a CS graduate who enters the computing workforce without knowledge of PDC now has an incomplete education for today’s computer systems. Yet PDC education requires substantial and wide-ranging curricular change, a development that seldom takes place quickly in US education. This funded project established CSinParallel, an incremental, modular approach to adding content and hands-on experience in PDC rapidly to courses throughout the CS curriculum. We created brief (1-3 class day) teaching modules on topics in PDC that are flexible and adaptable for various courses and local curricular settings that provide readings and exercises for students as early as the first CS course (see csinparallel.org), and tested these modules in two undergraduate institutions. We found that these limited interventions, deployed in a spiral-like "early and often" manner in multiple courses at all undergraduate curricular levels, provided our students with elements of both breadth and depth in PDC content, while requiring only limited course syllabus modifications. Our students now expect appropriate PDC topics in the context of nearly every CS course. Hands-on exercises motivate interest and comprehension while introducing a range of today’s PDC hardware and software tools, thus providing a basis for mastering the PDC toolsets of the future. Besides CSinParallel teaching modules, our project also produced the WebMapReduce software, a simplified user interface for Hadoop that enables even beginning students to program distributed-computing clusters for computations with potentially enormous data, using a common programming language of their choice (webmapreduce.sf.net). Hadoop is open-source software used by Yahoo!, Facebook, and more than half of the Fortune 50. Now, all our introductory CS students launch their own Hadoop computations first-hand, using WebMapReduce. Through dissemination to computer science educators at national professional meetings, we began to form a community of educators and to create synergistic ties with other efforts focused on increasing PDC in undergraduate CS. CSinParallel is featured as an exemplar in the prominent CS2013 curriculum recommendations, which includes greatly expanded coverage of PDC knowledge. This project formed the basis for a larger second CSinParallel proposal (DUE-1226172/1225739/1225796, funded), which focuses on adding strategic new modules and expanding adoption through regional workshops. This CCLI project demonstrated how to transform undergraduate CS education by adding essential and urgent topics in PDC through a feasible, incremental, multi-level modular approach, and disseminated these materials and strategy widely. CSinParallel not only helps to address the IT workforce-development crisis represented in the sudden technological revolutions of multicore and cloud computing, but also indicates how rapid curricular change can be accomplished.