Decomposition, Abstraction & Algorithmic Thinking