Copyright © National Academy of Sciences. All rights reserved.
The Future of Computing Performance: Game Over or Next Level?
RESEARCH, PRACTICE, AND EDUCATION 149
programming is not part of the undergraduate curriculum for either
CS students or scientists in other domains and is often presented as a
graduate elective course for CS and electrical and computer engineering
students. In the coming world of nearly ubiquitous parallel architectures,
relegating parallelism to the boundaries of the curriculum will not suf-
fice. Instead, it will increasingly be a practical tool for domain scientists
and will be immediately useful for software, system, and application
development.
Parallel programming—even the parallel programming of today—is
hard, but there are enough counterexamples to suggest that it may not be
intractable. Computational reasoning for parallel problem-solving—the
intellectual process of mapping the structure of a problem to a strategy
for solution—is fairly straightforward for computer scientists and domain
scientists alike, regardless of the level of parallelism involved or apparent
in the solution. Most domain scientists—in such fields as physics, biology,
chemistry, and engineering—understand the concepts of causality, corre-
lation, and independence (parallelism vs sequence). There is a mismatch
between how scientists and other domain specialists think about their
problems and how they express parallelism in their code. It therefore
becomes difficult for both computer and noncomputer scientists to write
programs. Straightforwardness is lost in the current expression of parallel
programming. It is possible, and even common, to express the problem
of parallel programming in a way that is complex and difficult to under-
stand, but the recommendations in this report are aimed at developing
models and approaches in which such complexity is not necessary.
Arguably, computational experimentation—performing science
exploration with computer models—is becoming an important part of
modern scientific endeavor. Computational experimentation is modern-
izing the scientific method. Consequently, the ability to express scientific
theories and models in computational form is a critical skill for modern
scientists. If computational models are to be targeted to parallel hardware,
as we argue in this report, parallel approaches to reasoning and think-
ing will be essential. Jeannette Wing has argued
18
for the importance of
computational thinking, broadly, and a current National Research Council
study is exploring that notion. A recent report of that study also touched
on concurrency and parallelism as part of computational thinking.
19
With
respect to the CS curriculum, because no general-purpose paradigm has
18
Jeannette M. Wing, 2006, Computational thinking, Communications of the ACM 49(3):
33-35.
19
See NRC, 2010, Report of a Workshop on the Scope and Nature of Computational Think-
ing, Washington, D.C.: The National Academies Press, available online at http://www.nap.
edu/catalog.php?record_id=12840.