Computer Programming: An Introduction for the Scientifically Inclined