Success in large-scale scientific compu
tations often depends on algorithm design.
Even the fastest machine may prove to be
inadequate if insufficient attention is paid
to the way in which the computation is
organized. We have used several problems
from computational physics to illustrate
the importance of good algorithms, and
we offer some very general principles for
designing algorithms. Two subthemes are,
first, the strong connection between the
algorithm and the architecture of the
target machine; and second, the impor
tance of non-numerical methods in scien
tific computations.