Think Python, a book by Allen B. Downey