Learning Scientific Programming with Python by Christian Hill