http://interactivepython.org/runestone/static/thinkcspy/toc.html