Abstract reasoning ability entered the national conversation this year as the Common Core State Standards in mathematics were broadly implemented in the United States. In particular, one of the eight Standards for Mathematical Practice is to “reason abstractly and quantitatively.” The so-called STEM subjects — science, technology, engineering and math — are well-known for emphasizing this skill. Given that STEM-related fields are where most high-skilled job growth is predicted, today’s students would do well to develop their ability to think abstractly.
So what is abstract reasoning, and why is it so important? Let’s break it down: To reason is to use logic in piecing together information, usually with the goal of forming an inference or conclusion. Abstract simply means that this process is a thought-based exercise of the mind as opposed to being based in concrete experience. For example, if you know that ice melts at temperatures above 32°F, you can reason abstractly that an ice cube placed on the counter of your room temperature kitchen will melt. You don’t have to take an actual ice cube out of your freezer and observe it for an hour to arrive at this conclusion.
Of the subjects that you could study in order to develop strong abstract reasoning skills, computer science is a natural and practical choice, as well as being a highly creative and exciting area in which to learn and work. The programming aspect of computer science is well-known and is one area where abstract thinking matters a great deal. Programming, after all, is the creation of a set of instructions that a computer can follow to perform a specific task. Such tasks typically involve the manipulation of digital information, decidedly not the kind of stuff you can grab hold of to see how it reacts in the tangible world.
Learning to program well involves developing the ability to think logically and abstractly so that you can anticipate how the computer will react to the instructions you give. Great programmers are actually capable of writing simple code without having to check it with a computer because they have the ability to analyze processes in their minds. If you cannot think abstractly, you may still be able to get your code to “work” with trial-and-error tinkering, but that approach lacks the robustness needed to solve meaningful problems that tend to be more complex.
The rich experience of learning computer science, however, is so much more than coding. When you study computer science, you engage in computational thinking, in which logic, abstraction and creativity come together to help solve intellectually interesting problems. As Professor Jeannette Wing of Carnegie Mellon University argues in her seminal article* on the topic, computational thinking is a skill set from which everyone would benefit no matter their career path.
Why so? Because when you study computer science, your mind learns to grapple with high-level questions such as: How can existing information be used to deduce further information that will help solve the problem? How should a complex system be designed in order to maximize simplicity and usability? How can a complex problem be broken down into smaller pieces that are easier to solve? Can a common approach be devised to efficiently handle similar problems?
If these questions seem like they would be applicable in a wide variety of fields, STEM and non-STEM, it’s because they are. In essence, when you study computer science you learn the valuable skill of thinking abstractly like a computer scientist even if you don’t plan on becoming one.
*Wing, Jeannette M. “Computational Thinking.” Communications of the ACM 49:3 (March 2006) 33-35.