Abstractive-Based Programming Approach to Computational Thinking: Discover, Extract, Create, and Assemble