How to teach coding and computational thinking to our youngest learners
Can children as young as five learn computer science? Marina Umaschi Bers, professor of education and computer science at Boston College offers an emphatic “yes” to that question.
Bers, who is Director of the Interdisciplinary Developmental Technologies (DevTech) research group and who co-developed the free ScratchJr programming language, argues that young learners are uniquely positioned to engage with programming languages, and that there are important benefits—for both individuals and for society—of reaching children early. But Bers also cautions that the learning experience has to be situated within the context of play, storytelling, socialization, and problem-solving.
We sat down with Bers to discuss computer science and computational thinking education (and the difference between the two), the notion of a “coding playground,” and her current projects.
You co-developed the ScratchJr programming language for children ages 5 to 7. Why did you feel it was important for really young learners to have a programming language?
Learning a programming language is like acquiring a new literacy. When children are little, that’s a time they are learning how to read and write, which are very important. But in today’s world, we also need to learn how to communicate with computers. That means learning how to program. We take advantage of the young age, which is when you’re curious, you are open. You don’t make distinctions in disciplines. You’re just curious about the world, you’re like a sponge. Developmentally, if taught in an age-appropriate way, children are ready to learn new symbolic systems of representation—such as the alphabet or a child-friendly programming language—to express themselves.
Then in the bigger picture, there’s lots of research—especially by James Heckman, who is a Nobel Laureate in economics—who showed that the earlier you start your educational programs, the more return on your investment for society.
Finally, stereotypes about who’s good at math, science and technology start to develop by the age of eight. Generally speaking, most research says that by the time that kids are in third grade, girls and minorities encounter more barriers and become less confident in these topics. If you’re not going to start teaching earlier about these things, you’re going to have to work against stereotypes. For example, my former doctoral student Amanda Sullivan, wrote a wonderful book about this, based on her dissertation.
What should computer science education look like for young learners? In particular, you’ve pioneered the concept of “coding as a playground” when it comes to young learners. What does that mean?
Little kids have their own developmental possibilities. They have shorter attention spans. They are not fluent in reading and writing yet. They don’t have very good motor skills. Their ability to sequence or to think logically is not as developed as with older kids. And so forth. We wanted to create a programming language that’s for them—that’s visual, that’s simple, that’s easily manipulated. You cannot give a language like Java or Swift to young kids. That’s how we came up with the idea of ScratchJr on the screen or KIBO as a robot.
However, once you create a programming language developmentally appropriate for young kids, you need a pedagogy that’s also developmentally appropriate. How are you going to teach this programming language? And my response is: we should do it the same way that kids learn other things—like a playground. That’s why I talk about coding playgrounds. You want to set up an environment that’s fun, where children are discovering on their own and talking with others, imagining and making choices. Where they are learning by problem solving, by trial-and-error, by inventing and exploring. Where they have autonomy to even engage in conflict. And they learn how to solve those social conflicts.
I coined a theoretical framework to talk about the kind of activities that children engage in in both the outdoor playground and in the coding playground. It is called Positive Technological Development (PTD). We talk about six Cs, which are six positive behaviors that we find in the playground: communication, collaboration, content creation, creativity, choices of conduct, community building. When we create coding playgrounds we intentionally need to design structures and mechanisms for these six C’s to happen.
How does thinking about computer science as a literacy help us to create the kinds of learning environments that you describe? And what does treating computer science as a literacy do for our understanding of what can be accomplished with computer science?
The way we define literacy is learning how to use a symbolic system—it could be an alphabet or it could be numbers—that’s socially situated and has a grammar and syntax to create an artifact (textual or computational) to express and communicate ideas, and to share with others. That symbolic system is not just your own, but other people agree with the meanings of it and can interpret it.
The expressive part is really important. Because you’re not just learning the grammar and syntax, you’re not just learning how to decode. You’re also learning how to create your own sentences, your own meaning. And not just sentences that make sense grammatically, but do they create a story? Who you are is represented in what you’re doing. And that is a vision of literacy that involves meaning-making, interpretation, and voice.
Coding as a literacy means empowering children to express themselves through their computational creations and projects. If we teach computer science the right way—which for us, is creating a coding playground that is expressive and creative—we really have the opportunity to rethink what learning is all about. If we look at what happens on a playground, children are definitely learning. And so how can we bring the learning experience into the computer science class through a coding playground?
You’re involved in a number of projects to understand the impact of computer science education for young children. What are you yourself learning?
In all of my projects, we are really always working with teachers. Because it gets to kids through teachers. And these are early childhood teachers. They’re not necessarily trained as computer science or science teachers. So we developed curricula, like, the Coding as Another Language curriculum for ScratchJr and KIBO, and we worked with teachers to understand their needs, their conceptions of coding and literacy. We helped them learn how to use these tools in creative, purposeful ways. And once they learn that, how they learn the pedagogy for the coding playground or the curriculum for Coding as Another Language, so they could bring it into their own classrooms.
We’re also learning a lot about children’s development. First, we were looking at whether they use coding expressively, that is to say, do they make their own creative projects and how? We know they’re learning the blocks. But can they combine these blocks to tell a story that’s meaningful? So, for example, in a classroom of 30 kids, we don’t want to see 30 projects that look the same. That’s not successful. Success is 30 projects that all look different and tell a story in a different way.
So we look at the children’s projects to see the expressive side. Then we do pre- and post-assessments to look at children’s coding skills and computational thinking. Because they might be very expressive, but maybe they didn’t develop new coding skills and new ways of thinking about debugging or problem-solving.
What we’re seeing in one of our current randomized control trial projects, from comparing students who’ve learned with ScratchJr and those who haven’t learned to code, is that coding is not the same as computational thinking. Which makes sense because computational thinking is a thought process, but coding is using a language to express that thinking. You can be a logical thinker, but still not know how to code. Or you can be an excellent coder, but not think in creative ways. It’s very, very important that schools do both. I see this as an equity issue.
Tell me more about the equity dimension of how schools are teaching computer science and computational thinking right now.
In order to code, you need access to technology. A lot of the schools that have fewer resources drop coding because they don’t have access to technology. And while they may still keep teaching computational thinking, those children are not going to be in the same place as those other children in more resourced schools that are doing both coding and computational thinking. So we really see coding and computational thinking as two sides of the same coin. You think in abstract, sequential ways, and you put that thinking in practice, through a programming language. Schools need to be creating opportunities for both of these elements.