Python for software design : how to think like a computer scientist - Downey, Allen (Cambridge University Press, 2009)