How to Think Like a Computer Scientist: Learning with Python ...
Peter Wentworth & Jeffrey Elkner & Allen B. Downey and Chris Meyers