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