Think Python How to Think Like a Computer Scientist Version 2.0.5 December 2012 Allen Downey