Software Design. Materials from Allen Downey's Think Python.