Introduction to Scientific Computation and Programming by Daniel T. Kaplan