Driven to Abstraction: Strengthen Your Thinking Skills with Computer Science


December 5, 2013 Filed under: AP Computer Science,Computer Programming,STEM Education IMACS Staff Writer @ 1:00 am

After school, weekend and online programs in math and computer science for gifted children who enjoy fun, academic challenges.
IMACS is proud to be a Partner for CSEdWeek, December 9-15, 2013.
Have you registered for the Hour of Code? Do it now!

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.

Excited by an Hour of Code? Imagine a lifetime of intellectual advantage when you take online computer science courses from IMACS, including our College Board-approved AP Computer Science course. Like IMACS on Facebook to get FREE weekly logic puzzles.
Share

2 responses to “Driven to Abstraction: Strengthen Your Thinking Skills with Computer Science”

  1. Mostly I agree. Every school pupil should have the opportunity to do some computer programming. Yet, after a long day’s work developing software, one longs for anything other than the sight of a computer. I can empathise with this anecdote from a topical mathematics story: “Dr Yitang Zhang was enjoying the summer holiday in a friend’s back garden in Colorado last year when it suddenly occurred to him that he could make a major breakthrough in the field of analytic number theory.” Note that he was in “a friend’s back garden” and not “the university’s computer laboratory”. http://www.independent.co.uk/news/science/that-figures-professor-who-had-to-work-at-subway-dazzles-world-of-maths-after-solving-centuriesold-prime-number-riddle-8625637.html

    The terms Computer Science, coding, or software development are often used interchangably. I like the term “hacking”, used in the creative sense. The linked article belittles “trial-and-error tinkering” as lacking the robustness needed to solve complex problems, yet that approach is at the heart of the Test Driven Development methodology. Experimentation can be a useful professional approach.

    Computer Science is somewhat of a misnomer as it does not often involve the scientific method. Sometimes the thinking is mundane. ÃÃââââ‚ÃÆâ€ââââ€Å¡Ã‚¬Ã…¾Ã‚¢ÃƒÆ’ƒÂ¢Ã¢â€šÂ¬Ã…¡Ãƒâ€šÃ‚¬ÃƒÆ’…¡Ã‚¬Ã‚ ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’Æ’ÃÃÆâ€ââ€ÅÃƒâ€šÃ‚¾ÃƒÆ’‚¢ÃƒÆ’ƒÂ¢Ã¢â€šÂ¬Ã‚ ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€ Ã¢â‚¬â„¢ÃƒÆ’‚¢Ã¢â€šÂ¬Ã‚ ÃƒÂ¢Ã¢ââ‚Ãâ€Ãâââ€Ãƒâ€¦Ã‚¡Ãƒâ€šÃ‚¬Ãƒâ€šÃ‚¦ÃƒÆ’‚¡ÃƒÆ’‚¬Ãƒâ€¦Ã‚¡Ãƒâ€šÃ‚¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚¢ÃƒÆâ€â„ÃââÃÆâ€ââ€žÂ¢ÃƒÆ’ƒâ€šÃ‚¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚¬Ã…¡Ã‚¬Ã…¡Ãƒâ€šÃ‚¢ÃƒÆ’ƒÆ’ƒâ€ Ã¢â‚¬â„¢ÃƒÆ’¢ââ€Ãâââ€ÃÆâ€ââââ€šÂ¬Ã…¾Ã‚¢ÃƒÆ’ƒÂ¢Ã¢â€šÂ¬Ã‚¦Ãƒâ€šÃ‚¡ÃƒÆ’‚¬Ã‚¦Ãƒâ€šÃ‚¡ÃƒÆ’‚¬Ã‚ ÃƒÂÃâÃÃââ‚ÂÂÂ¬ÃƒÆ’‚ ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€šÃ‚¢ÃƒÂ¢Ã¢â€šÂ¬Ã…¡Ã‚¬Ã…¡Ãƒâ€šÃ‚¢ÃƒÆ’ƒÂ¢Ã¢â‚¬Å¡Ãâ€ÅÂÂÃÃÆâ€â„¢ÃƒÆ’¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒÂ¢Ã¢â€šÂ¬Ã…¡Ãƒâ€šÃ‚¡ÃƒÆ’ƒÆ’ƒÆ’‚¬ÃƒÂ¢ÃÂÂÃâ€ÃÃâââ

  2. NL says:

    The author do not seems to know the full meaning of “abstract”.

    “Abstract simply means that this process [to reason] is a thought-based exercise of the mind as opposed to being based in concrete experience.”

    Reasoning is by definition a thought process! One does not “reason” by doing experiments. That’s what “to experiment” is about !

    “Abstract” means that some details have been forgotten, (removed) precisely the details that are irrelevant to the present reasoning.

    For instance, I may say “I have a thumb, a forefinger, a midle finger, a ring finger, and a little finger”. If I only care about fingers, I can sum it up to “I have five fingers”. Here, I used a number to abstract the nature of my fingers.

    A process of the mind is sometimes an abstraction from a concrete event : the idea of my fingers issued from the perception of my fingers.

Leave a Reply

Your email address will not be published. Required fields are marked *

Anti-Spam Quiz: