We consider the wide scale use of computers in scientific research and the implications for the educational curriculum. We examine the practice of scientific computing from the perspective of obtaining robust numerical results. We explore the philosophy underlying this process and isolate the essential elements. We discuss in detail practices that are designed to minimize the likelihood of errors and also survey a set of supporting skills. Throughout, examples are used to illustrate the key ideas.