Essential Computational Thinking: Computer Science from Scratch