Computational thinking is a cognitive or thought process involving logical reasoning by which problems are solved and by which artifacts, procedures and systems are better understood. It embraces:
The ability to think algorithmically
The ability to think in terms of decomposition
The ability to think in generalizations, identifying and making use of patterns
The ability to think in abstractions, choosing good representations, and
The ability to think in terms of evaluation.
Computational thinking can be applied to a wide range of entities including: human created objects, systems, processes, objects, algorithms, problems, solutions, abstractions, and collections of data or information.