# Karel #2: Reason Abstractly and Quantitatively

## What It Means

Get ready for the words contextualize and decontextualize. If students have a problem, they should be able to break it apart and show it symbolically, with pictures, or in any way other than the standard algorithm. Conversely, if students are working a problem, they should be able to apply the “math work” to the situation.

## Computer Programming Teaches Students How to Think

Math, and in particular logic, is an essential component of computer programming. Students learn quickly that it helps them to break complicated problems into smaller ones. Lots of abstract thinking takes place before an algorithm is developed and a program written. As an example, let’s look at the level “Explorer” in the Karel course:

In this level the robot made 30 steps from his home square. To be able to find his way back home, he dropped a mark whenever he made a left turn, and a gem whenever he made a right turn. The students’ task is to design an algorithm and write a program for the robot to turn around and follow the same path back home. Here, students need to think abstractly and figure out that when the robot is walking in the opposite direction, the gems and marks need to be interpreted for the left and right turns differently.