Below is an excerpt from the introductory chapter of the book Coding as a Playground: Programming and Computational Thinking in the Early Childhood Classroom, by Tufts University professor Marina Umaschi Bers, co-creator of ScratchJr.
The publisher notes, Coding as a Playground is “the first book to focus on how young children can engage in computational thinking and be taught to become computer programmers, a process that can increase both their cognitive and social-emotional skills. Readers will learn how coding can engage children as producers — and not merely consumers — of technology in a playful way.”
By Marina Umaschi Bers
Liana, five years old, is sitting with an iPad in her kindergarten class. She is focused. Every so often, she wiggles. She suddenly screams, to no one in particular, “Look at my cat! Look at my cat!” Liana is excited to show her animation. She has programmed the ScratchJr kitten to appear and disappear on the screen ten different times. She has put together a long sequence of graphical programming blocks, purple blocks to be more specific, called Looks blocks. Liana cannot read yet, but she just knows that these programming blocks can make her ScratchJr kitten show and hide. She is in control of the kitten’s behaviors. She can decide how many times it will appear and disappear on the screen by choosing the blocks to put together in a sequence. As a five year old, Liana, like most children her age, wants to make the longest possible sequence, so she puts together a script with ten blocks, until she runs out of space in the programming area.
When Liana’s kindergarten teacher hears her excitement, she walks over to see Liana’s project. Liana is proud to show “my movie,” as she calls it. “I made it. Look at my cat. It appears and disappears, it appears and disappears, it appears and disappears. Many times. Look!” She clicks on the green flag on the ScratchJr interface and the animation starts. At that point, Liana’s teacher asks her, “How many times does the kitten show and hide?” “Ten times,” replies Liana. “I ran out of room. I wanted more times.” The teacher shows her a long orange programming block, called “Repeat.” This block allows for other blocks to be inserted inside its “loop.” It then runs the blocks inside the loop as many times as the programmer decides. Liana notices that this block looks slightly different than the purple ones and it is orange. It belongs to a different category, called “Control Blocks.”
After some trial and error, in which Liana plays with inserting different combinations of the show and hide purple blocks inside the repeat block, she figures it out. She can put just one of each purple block inside the repeat block, and set the number of repetition times to the highest she can think of. She chooses the number 99 and clicks the green flag to see the animation. The kitten starts appearing and disappearing. After a few seconds, she gets bored of watching. So she goes back to her code and changes the number of repetitions to 20 (see Figure 0.1).
During this experience, Liana engaged with some of the most powerful ideas of computer sciences that are accessible for a young child. She also developed computational thinking. She learned that a programing language has a syntax in which symbols represent actions. She understood that her choices had an impact on what was happening on the screen. She was able to create a sequence of programming blocks to represent a complex behavior (e.g., appearing and disappearing). She used logic in a systematic way to correctly order the blocks in a sequence. She practiced and applied the concept of patterns, which she had learned earlier in the year during math time in class. She learned new blocks that allowed her to achieve her goals. She discovered the concept of loops and parameters. At the same time, she engaged in problem solving, and also exercised her tenacity at tackling something she truly cared about (i.e., having a very long kitten movie). Finally, Liana was able to create a project from her own original idea and turn it into a final product, a project she chose and to which she was personally attached. She was proud to share it with others and happy to revise it when the final outcome did not meet her expectations (i.e., it ended up being so long that it was boring to watch). She also engaged with mathematical ideas of estimation and number sense (i.e., 99 is way longer than 20).
Liana used ScratchJr to code, a programming language specifically designed for young children that runs on tablets as well as desktops, and that can be downloaded for free. ScratchJr was designed and developed by my DevTech research group at Tufts University in collaboration with Mitch Resnick’s LifeLong Kindergarten group at the MIT Media Lab and Paula Bonta and Brian Silverman from the PICO company in Canada. To date, over six million young children all over the world are using ScratchJr to create their own projects.
Liana’s teacher used ScratchJr to create a learning environment in which children had the freedom to choose a project they cared about. Liana was excited and passionate. She was not going to give up until her cat did exactly what she wanted. She worked hard and she rejoiced in that process. She enjoyed learning and fully engaged in it. For her, developing computational thinking involved more than problem solving; it meant gaining the concepts, skills, and habits of mind to express herself through coding.
This book explores the role of coding for young children. Most specifically, it focuses on the developmental milestones and learning experiences that children can attain by becoming programmers and by thinking like computer scientists. Coding engages children as producers, and not merely consumers, of technology. Children such as Liana can create their own movies or animations, interactive games or stories. Coding is not only a cognitive activity that involves problem solving and mastering programming concepts and skills, but also an expressive medium that engages emotional and social domains. Liana stuck to her project and debugged it because she truly cared about it. She felt proud and in control. Her “cat movie” allowed her to show an aspect of who she is. Liana loves animated movies and she was thrilled to make her own.
Just like any natural language, English, Spanish, or Japanese, which allows us to express our needs and desires, our discoveries and frustrations, our dreams and everyday doings, programming languages such as ScratchJr provide a tool for expression. We need to learn their syntax and grammars and, over time, the more we engage with them, the more fluent we become. We know when we have truly learned a new language because we are able to use it for different purposes: to write a love poem, to make a shopping list for the supermarket, to compose an academic essay, to order a pizza, or to discuss political events at a social gathering. A language helps us think and communicate in new ways. Furthermore, the night we dream in that new language, we know we have mastered it.
This book focuses on the activity of coding as a playground. Coding can happen by using different programing languages, just as expressing ourselves can happen through different natural languages such as Spanish, English, or Mandarin. Liana used ScratchJr to make an animated movie of her kitten appearing and disappearing.
There is a new push for coding. This book proposes that coding is a new literacy for the 21st century. As a literacy, coding enables new ways of thinking and new ways of communicating and expressing ideas. Furthermore, literacy ensures participation in decision-making processes and civic institutions. From an historical perspective, and currently in the developing world, those who can’t read and write are left out of power structures. Their civic voices are not heard. Will this be the case for those who can’t code? For those who can’t think in computational ways?
In early childhood we start teaching to read and write. However, we don’t expect every child to grow into a professional writer. I believe textual literacy is both an important skill and intellectual tool for everyone. So it is with coding. I do not advocate for all children to grow into software engineers and programmers, but I want them to have computational literacy so they can become producers, and not only consumers, of digital artifacts.
I understand the cognitive and economic benefits that underlie the push for introducing coding in early childhood education, and I am happy to see computer programing becoming popular again. However, in this book I build a different case for coding. Not only is it important for children to start programming at a young age to prepare them for the booming computing workforce, but most importantly, coding provides a systematic way of thinking and a language for expression and communication. While coding, children learn to become better problem solvers, mathematicians, engineers, story tellers, inventors, and collaborators. These individual and interpersonal skills are introduced and refined through the process of sequencing a simple program: a kitten appearing and disappearing on a screen, or robots dancing the Hokey Pokey alongside a kindergarten class.
Coding engages and reinforces computational thinking. At the same time, computational thinking engages and reinforces coding. In this context, coding is the action of putting together sequences of instructions and debugging or problem solving when things do not work as expected. In the process (note that coding is a verb, not a noun, so it implies unfolding over time), children encounter powerful ideas from computer science and thus engage in computational thinking. Is coding the only way to engage in this kind of thinking? Definitely not. As we will see later in this book, there are approaches to do so through low-tech games, singing, and dancing. However, in this book, I advocate that coding should be part of every young child’s computational thinking experience. Furthermore, I also advocate for a playground approach to coding, as opposed to a playpen experience.
After this introduction, the book has three parts: Part I: Coding as Playground; Part II: Computational Thinking; and Part III: New Languages for Young Children. Throughout the book I present vignettes of children and teachers, as well as results from different studies, theoretical frameworks, technology designs, and curriculum recommendations. I will challenge the reader to think about the many ways that coding can engage young children in some of the same developmental milestones as the playground experience. New initiatives for introducing coding and computational thinking in early childhood education are growing. New standards and frameworks are being developed alongside new programming languages and interfaces. It is our responsibility to make sure that the emphasis on play and creativity, social and emotional growth, are not left out when computer programming enters kindergarten.