Successful computational scientists are experts in both a scientific field, such as chemistry, physics, or astrophysics, knowledgeable about both mathematical representations and algorithmic implementations, and also specialize in developing and optimizing scientific application codes to run on computers, both large and small. A truly successful computational science investigation requires the "three A's": a compelling Application, the appropriate Algorithm, and the underlying Architecture. Building on the architectural concepts previously introduced, we will survey several HPC applications and discuss the choice of algorithmic implementations in the context of current and anticipated architectural trends. Our goal is to provide an overview of the general terminology the cross-cuts many computational science domains and provide an introduction to a computational approaches that might be employed.