How to Think Like a Computer Scientist: Learning with Pythonis an introduction to programming using Python.