A problem solving process that involves formulating and solving problems with the use of computer and other tools, logically organizing and analyzing data, representing data through abstractions, automating solutions through algorithmic thinking, identifying, analyzing, and implementing possible solutions, and generalizing and transferring this problem-solving process to a wide variety of problems