Stop Teaching Programming, Start Teaching Computational Thinking

Education Maker News Technology
Photo by Lucas Saugan

School administrators and educators are currently zealous about the idea that every student should learn computer science. โ€œThink about the world we live in now,โ€ says New York Mayor Bill de Blasio, โ€œHundreds of thousands of good jobs will be accessible to those with coding and other essential skills.โ€ I agree that everyone should learn to program, but I disagree with Mayor de Blasioโ€™s motivations. You shouldnโ€™t learn to program in order to get a good job. Learning to think computationally can give you a new way to understand and describe your world. Learning to program can make you a more expressive person.

We express ourselves in many different forms, and each form has its core elements. Musicians rely on pitch, rhythm, and timbre. Visual artists and designers use color, form, and scale. Performers use movement, gesture, and timing. Computational thinking is another form of expression, and it rests on a set of core elements as well: Inputs and outputs connect a computer to the rest of the world. Named memory addresses called variables keep track of important properties, like temperature, bank balances, or button pushes. Conditional statements define what to do when one of the properties changes significantly (for example โ€œif my bank balance drops below $10, email meโ€). Various forms of iterative loops are used to continually check for changes in a systemโ€™s inputs and to update its outputs. Functions combine several statements into repeatable actions. These concepts underlie every form of programming.

If you like to make things, you probably either design them with computers, or you put computers inside them. You may think youโ€™re just a novice, but as you use these tools, youโ€™re learning to program. If you think computer programming is all about math, youโ€™re wrong. Itโ€™s about describing a situation precisely, and giving good directions for what to do when conditions change.

Consider these everyday moments:
ยป If the temperature goes below 65ยฐ, turn on the heat
ยป When the drum solo starts, mute the guitar track and spotlight the drum kit
ยป Itโ€™s just a jump to the left, and then a step to the right. With your hands on your hips, you bring your knees in tight.

All of these statements embody computational thinking. They could all be programs.

Computational thinkers arenโ€™t just programmers. Theyโ€™re the people who can create lovely intricate patterns in Illustrator, or make a really cool gizmo in Minecraft, or make a MIDI synthesizer play crazy microtonal jazz solos. They understand not only how to make a computer speak, but they also have an imagination for what it could possibly say. People often ask, โ€œWhat language should I learn?โ€ There is no right answer because youโ€™re going to learn several if you start programming. Pick something that computers are used for that excites you, and find out what languages are used to make it happen. With each new application, youโ€™re likely to learn a new language, and youโ€™ll become a better programmer and a better computational thinker as you do.

Speaking and writing isnโ€™t just something that linguists do, nor should programming be something that just computer scientists do. So learn to program. Like any form of expression, it will widen your view of your world as you learn to master it.

(Above) Leo Villarealย of The Bay Lights projectย uses code to set up fantastic light patterns across San Francisco’s Bay Bridge. Photo by Lucas Saugan

Tagged
Tom Igoe

Tom Igoe is an associate arts professor at NYUโ€™s Interactive Telecommunications Program, and a co-counder of arduino.cc.

View more articles by Tom Igoe
Discuss this article with the rest of the community on our Discord server!

ADVERTISEMENT

FEEDBACK