This article is published in the May 2011 issue.

Teaching the Parallel Future: Finding Promise in a Sea of Cores

The recent National Academies report, “The Future of Computing Performance: Game Over or Next Level?” lays out several broad landscape changes computing researchers must address to sustain growth in system performance. Indeed, we hear about little else in the parade of articles, op-eds, and conference sessions these days. Opinions vary from “We solved this 30 years ago” to “It will all blow over” to “The sky is falling.”  For the computing community at large, this is clearly a significant challenge.

For computer science educators, it’s even less clear how to find a way to convey the breadth and depth of this transformation to students at a time when there is enormous churn in the software and hardware solutions being proposed, adopted, and discarded. Indeed, as the NAS report emphasizes, it is critical to the field that students gain skills in reasoning about parallelism and data locality, even as undergraduates. By the time they graduate, current students will already be faced with platforms, even those in the embedded space, that build almost exclusively upon multi- and many-core architectures.

As least as far back as the mid-90s, during the peak of big-iron supercomputing and the beginning of the cluster era, groups of educators contemplated how to convert the undergraduate CS curriculum to include parallel approaches. However, looking at the working papers produced by the Forum on Parallel Computing Curricula in 1997, for example, you see that many of the issues they discuss are the same ones that still vex us today. How deeply do we integrate parallelism into the CS curriculum? Do we use separate courses or integrate material into existing course structures? Do we fundamentally change the structure and presentation of all material to reflect a parallel perspective? How do we prepare the general faculty to teach this material?

Despite all the effort put forth at that time and since, it is not surprising that we still don’t have broad community agreement on approaches or definitive guidance from a curriculum standards group on whether and how to incorporate parallelism in the CS curriculum. Since the mid-90s, the tremendous explosion of computing applications, particularly those feeding off the growth of the Internet, meant that any spare space in the curriculum was devoted to client-server architectures, Java RMI, or web application programming. These pushed parallelism, not completely unjustly, to the sidelines.

The existing aggregation of curricula, teaching experience, programming languages, and legacy code has a significant amount of momentum that will not easily be displaced by new models. However, computing has seen and weathered many large changes before. As recently as the late 90’s, educators were still working through the best methods of dealing with object-oriented abstractions that were developed in the 70’s and 80’s. None of our programming sea-changes have happened overnight. Similarly, in the transition to parallel programming models, there remains a lot of groundwork to be done— convincing faculty, finding the best teaching methods, and developing tools and abstractions that make the concepts more accessible to students. However, unlike these past changes, our field is already several years behind a fast-moving hardware curve that is driving the change.

It is in shortening this curricular transition that our research infrastructure can play a critical role. By an investment in expediting the transfer of newly developed architectures, tools, and programming models into the classroom, computer science students will gain a more mature perspective on parallel computing—one that otherwise will likely be informed only by the messy infrastructure of the past.

In particular, these efforts need to reach down to levels that are accessible by our students at the earliest stages of their training so we don’t have to un-train them from rigid sequential thinking. The good news is that our students are always excited about trying new things, and they have no preconceived biases or fears surrounding the difficulty of parallel programming. In fact, we often overlook the fact that new students come to us with significant aptitude for reasoning about parallelism and concurrent systems.

At SIGCSE 2010, Kim Bruce reported on more than a decade’s worth of experiences introducing concurrent event-driven designs in introductory programming courses. His conclusion was that students naturally think in very non-sequential terms, and that the carefully scaffolded exposure of first-year students to these topics isn’t overreaching. Future scaffolding could come in the form of tools, libraries, or simple deterministic abstractions, which also serve to make this material more accessible to current faculty who may want to teach parallel topics, but lack the necessary background.

New frameworks in this space are starting to appear. The MapReduce model, for example, has been adapted for use in pilot courses as early as CS1 across a range of universities. With properly constructed tools, such as St. Olaf’s WebMapReduce, students can gain direct, practiced exposure to “thinking in parallel” without the need for dealing with the details of the underlying system stack.

Researchers also stand to gain directly from partnerships with educators on at least two fronts. First, those working on simple and powerful programming interfaces to parallel systems could gain a lot of usability and performance data from observing how novice programmers use their infrastructure, as well as evaluating the programs they create for performance and correctness. Second, as industrial marketing has demonstrated many times, getting college students to use a tool is an excellent way to develop future demand—something that is necessary for reaching the critical mass of users needed to gain widespread adoption.

Among the groups supporting this interaction is the Educational Alliance for a Parallel Future (EAPF –, a collection of individuals from academia, industry, and government research who are concerned with how we as a community navigate this transition to a more parallel future for the CS curriculum. Our efforts in this space span a range of approaches, from raising awareness among educators to providing infrastructure for teaching to encouraging the development of course materials. Most relevant to researchers may be our efforts in finding high-impact ways to “scale out” novel materials and practices that have been shown to be effective. If you are interested in working on this issue, we encourage you to get in touch with those of us involved with EAPF, or with one of the other groups engaging in the various facets of this issue.

As our field tackles these significant research challenges, we encourage everyone to keep in mind the impact these changes are having on our curriculum.

Daniel Ernstis an Assistant Professor of Computer Science at the University of Wisconsin-Eau Claire( and a founding member of the Educational Alliance for a Parallel Future (EAPF).

Teaching the Parallel Future:  Finding Promise in a Sea of Cores