Computer Science From Scratch : Building Interpreters, Art, Emulators and MP in Python