Computational thinking is a skill set for solving complex problems, a way to learn topics in many disciplines, and a necessity for fully participating in a computational world.
Our working definition for computational thinking divides key concepts of computing into two categories: Foundations and Practices. Foundations are the cognitive processes necessary to write computer programs. Practices combine the foundations with additional skills and knowledge to solve an applied problem, whether that end result is a computer program, a better comprehension of a biological ecosystem, or an increased appreciation of how human migration patterns relate to geographical locations.
This working definition focuses on the foundations and practices of computational thinking. It is important to note that this overlaps, and yet is distinct from, computer science (the study of computers and algorithmic processes, including their principles, hardware and software designs, and impact on society) and coding (the practice of developing a set of instructions that a computer can understand and execute).