Computational Fluency

[This essay is an adapted excerpt from my book Lifelong Kindergarten.]

Over the past decade, there has been much discussion of the term computational thinking. The term, popularized by computer scientist Jeannette Wing, is generally used to describe computer-science concepts and strategies that can be useful in understanding and solving problems in a wide range of disciplines and contexts. In a growing number of schools around the world, there are now efforts to help students develop as computational thinkers.

In our Lifelong Kindergarten research group at the MIT Media Lab, we prefer to focus on the idea of computational fluency rather than computational thinking. Why? We want to highlight the importance of children developing as computational creators as well as computational thinkers. In our view, computational fluency involves not only an understanding of computational concepts and problem-solving strategies, but also the ability to create and express oneself with digital technologies.

Our group created the Scratch programming language and online community to help children develop computational fluency. Our approach with Scratch is distinct from many introductions to coding in that we focus explicitly on helping children learn to express themselves creatively through coding.

Most introductions to coding are based on puzzles. Children are asked to create a program to move a virtual character past some obstacles to reach a goal. As children create programs to solve these puzzles, they learn basic coding skills and computer science concepts.

With Scratch, we focus on projects instead of puzzles. When we introduce children to Scratch, we encourage them to create interactive stories, games, and animations, based on their own interests. They start with ideas and turn them into projects that they can share with other people.

Why focus on projects? We take seriously the analogy between coding and writing. When you learn to write, it’s not enough to learn spelling, grammar, and punctuation. It’s important to learn to tell stories and communicate your ideas. The same is true for coding. Puzzles might be fine for mastering the basic grammar and punctuation of coding, and learning the basic concepts of computer science, but they won’t help you learn to express yourself.

Imagine trying to learn to write just by working on crossword puzzles. Solving crossword puzzles could improve your spelling and vocabulary, and it could be fun, but would you become a good writer, able to tell stories and express your ideas fluently? I don’t think so. A project-based approach is the best path to fluency, whether for writing or coding.

Even though most people don’t grow up to become professional journalists or novelists, it’s important for everyone to learn to write. So too with coding — and for similar reasons. Most people won’t grow up to become professional programmers or computer scientists, but developing fluency with coding is valuable for everyone. Becoming fluent, whether with writing or coding, helps you to develop your thinking, develop your voice, and develop your identity.

Developing Your Thinking

In the process of writing, you learn to organize, refine, and reflect on your ideas. As you become a better writer, you become a better thinker.

As you learn to code, you also become a better thinker. For example, you learn how to break complex problems into simpler parts. You learn how to identify problems and debug them. You learn how to iteratively refine and improve designs over time. These types of strategies are at the core of computational thinking.

Once you learn these computational-thinking strategies, they can be useful in all types of problem-solving and design activities, not just in coding and computer science. By learning to debug computer programs, you’ll be better prepared to figure out what went wrong when a recipe doesn’t work out in the kitchen or when you get lost following someone’s directions.

Solving puzzles can be helpful in developing some of these computational-thinking skills, but creating your own projects takes you further, helping you develop your voice and develop your identity.

Developing Your Voice

Both writing and coding are forms of expression, ways to communicate your ideas with others. When you learn to write, for example, you can send a birthday message to a friend, submit an op-ed piece to your local newspaper, or record your personal feelings in a diary.

I see coding as an extension of writing, enabling you to “write” new types of things — interactive stories, games, animations, and simulations. Let me share an example from the Scratch online community (which I discuss more fully in my TED talk about kids learning to code).

A few years ago, on the day before Mother’s Day, I decided to use Scratch to make an interactive Mother’s Day card for my mom. Before starting, I checked to see if anyone else had made Mother’s Day cards in Scratch. I typed “Mother’s Day” in the search box, and I was delighted to see dozens and dozens of projects — many of them created in the previous 24 hours by procrastinators like me!

For example, one of the projects started with the words “HAPPY MOM DAY” drawn on top of a large red heart. Each of the 11 letters was interactive, transforming to a word when touched by the mouse cursor. As I moved the cursor across the screen, touching each letter, a special 11-word Mother’s Day message was revealed: “I love you and care for you. Happy Mother’s Day mom.”

The creator of this project was clearly developing her voice with Scratch — learning to express herself in new ways and integrating coding into the flow of her everyday life. In the future, I believe it will become as natural for young people to express themselves through coding as it is through writing.

(By the way, I didn’t end up making a Mother’s Day card for my mom. Instead, I sent her links to a dozen Mother’s Day projects that I found on the Scratch website. My mom, a lifelong educator, responded with the following message: “Mitch, enjoyed viewing all the kids’ Scratch cards so much . . . and I love that I’m the mother of a son who helped give kids the tools to celebrate this way!!!!”)

Developing Your Identity

When people learn to write, they begin to see themselves differently — and to see their role in society differently. The Brazilian educator-philosopher Paulo Freire led literacy campaigns in poor communities not simply to help people get jobs, but also to help people learn that “they can make and remake themselves” (as he wrote in Pedagogy of Indignation).

I see the same potential for coding. In today’s society, digital technologies are a symbol of possibility and progress. When children learn to use digital technologies to express themselves and share their ideas through coding, they begin to see themselves in new ways. They begin to see the possibility for contributing actively to society. They begin to see themselves as part of the future.

As we’ve introduced Scratch to young people, I’ve been excited by what they’ve created — and what they’ve learned in the process. But what excites me most is the way that many Scratchers start to see themselves as creators, developing confidence and pride in their ability to create things and express themselves fluently with new technologies.