Introduction to Scientific Computation and Programming