$$ \newcommand{\tp}{\thinspace .} $$

 

 

 

Teaching material on scientific computing has traditionally been very focused on the mathematics and the applications, while details on how the computer is programmed to solve the problems have received little attention. Many end up writing as simple programs as possible, without being aware of much useful computer science technology that would increase the fun, efficiency, and reliability of the their scientific computing activities.

This document demonstrates a series of good practices and tools from modern computer science, using a very simple mathematical problem with a very simple implementation such that we minimize the mathematical details. Our goal is to increase the technological quality of computer programming and make it match the more well-established quality of the mathematics of scientific computing.

More specifically we address the following topics:

The conventions and techniques outlined here will save you a lot of time when you incrementally extend software over time from simpler to more complicated problems. In particular, you will benefit from many good habits: