An Introduction to Scientific Computing by