In a first-grade classroom, Ms. Lorna begins to introduce students to robotics. The students eagerly situate themselves at their tables and hush as she starts reciting the children’s book There Was an Old Lady Who Swallowed a Fly. While reading, Ms. Lorna points to various uses of repetition, a term the students have recently learned in English class. She calls upon them to raise their hands when repetition is used throughout the story. Again and again, students’ hands shoot up across the classroom at the countless repeating words or phrases. Ms. Lorna refers to the predictability of this repetition as a pattern. At the end of the story, Ms. Lorna explains that repetition is not only essential in natural languages such as English but also in programming languages such as KIBO.
Soon after, she takes out the KIBO robot, and the children become happy and clap. In the front of the room, holding KIBO high so that everyone can see, she asks for a volunteer to help her hold the KIBO blocks. Ms. Lorna starts to make a program using a begin block followed by four forward blocks. Intentionally, she leaves out the end block that is necessary to complete the program. Without hesitation, the class shouts all together: “You forgot the end block!” Ms. Lorna reacts with surprise, all the while aware of the mistake, and says, “Thank you for debugging my program!” She then asks, “What is repeating in my now complete program?” An eager student shoots his hand into the air and answers, “The forward block!” Ms. Lorna nods approvingly and follows with a second question: “How many times does it repeat, class?” Students respond by lifting their four fingers high. Ms. Lorna nods in affirmation and explains, “We have now created a repeating pattern of blocks, just as we read a story with repeating patterns of words.” Then she adds with enthusiasm, “Now let’s run the program!”
Another student volunteers to do the routine scanning program with KIBO. Signaling a successful job, KIBO alerts the student that it is ready to run its program with a flashing green button. As the student presses play, KIBO begins to move forward four steps until completing its program. Variations of chants for KIBO fill the room while the robot moves, followed by a large sigh as KIBO comes to a stop. A student shouts out, “I want KIBO to go forward for even longer!” Ms. Lorna animatedly responds, “How do you suggest we do that, Aaliyah?”
Aaliyah takes a moment to think before responding. “Maybe if we use more forward blocks, like one hundred of them!” Ms. Lorna seizes the moment to go back to the concept of repetition and teach a new KIBO block and says, “That’s a great idea, Aaliyah! Unfortunately, we do not have one hundred forward blocks—but there is another way.”
The students pay attention as the teacher goes back into KIBO’s kit to pull out two new blocks. “This is what we call a repeat loop,” the teacher says and shows the gray begin block and the end repeat block. “We use these blocks when we want KIBO to repeat an action, like going forward.” Ms. Lorna puts the forward block in-between the loop created by the gray begin block and the end repeat block and says, “See! It is like we are making a cheese sandwich. The forward block is our cheese, and it goes in-between the two slices of the bread, the beginning and the end repeat blocks.”
“But how do we tell KIBO how many times to repeat going forward?” inquires a student. Ms. Lorna explains to them the use of parameters, a numbered or infinite small card that attaches to the repeat block with Velcro. “I do not see a one hundred card,” says Aaliyah, but she adds, “Let’s make it repeat infinite times, forever. That is better than one hundred.” The other children agree and start giggling. Ms. Lorna creates a new program using the repeat loop, forward block, and the infinite parameter card. After KIBO is scanned and begins its run, Aaliyah makes an observation: “This is great. It would have taken a really long time to scan one hundred blocks. And this is like a one hundred. It’s even a lot more, nonstop!” Ms. Lorna responds by affirming to the class, “Exactly, repeat loops make it easier to scan a KIBO program that has a repeating pattern!”
The class is now eager to program on their own. The teacher tells the students to get into their KIBO playgroups to begin assembling their own repeat loop programs. The room bustles as students work in their small groups to create repeating patterns of various kinds: motion, sound, and light blocks. As students finish building their programs, they work together in roles such as scanner and assistant to scan their programs. While some groups build their repeating patterns, others struggle to have KIBO run a program. Frustration is evoked in the echoes of foot-stomping and loud sighs. However, students know that debugging is part of the coding process, and they get at it. Elated groups with elaborate programs beckon Ms. Lorna to watch their KIBO repeat their programs several, if not infinite, times. As the lesson ends, students begin to clean up. The students assigned to the group organizer role take charge, placing each KIBO part back into its respective bin, as they have done many times.
Ms. Lorna’s classroom was following the CAL KIBO curriculum developed by my DevTech Research Group at Tufts University. This curriculum introduces powerful ideas of computer science, such as repeat loops, in direct conversation with powerful ideas from literacy, such as repetition. However, before getting to this, it focuses on the concept of sequencing. Sequences can be found in natural languages through words and stories and also in artificial languages; algorithms are sequences of instructions for a robot or program to follow.
At its simplest level, computer programming is the activity of putting together a sequence of instructions. In the process of making this sequence, the programmer engages in abstract, logical thinking. Although most of us can identify the act of thinking and recognize its value, there is no scholarly consensus on its definition. Thinking is the ability to represent, model, make sense, interpret, predict, and invent our experiences in the world. Thinking is facilitated by language. As Soviet psychologist Lev Vygotsky wrote, “Thought development is determined by language, i.e., by the linguistic tools of thought.” Thus, as educators, we strive to help children develop one of the most powerful tools for thinking: natural written languages. In the coding playground, we give them another tool: artificial programming languages.
Early childhood education has many strategies for building language skills and supporting the transition from oral to written language. The teaching of literacy has occupied the early grades for a long time. Today, we have a new opportunity: teaching children how to think by using both natural and artificial languages. While humans understand written alphabets, smart objects only understand programming languages.
I am using the term language, whether natural or artificial, to refer to a formal representational system of signs, governed by syntactic and grammatical combinatory rules, that serves to communicate. This broad definition encompasses natural languages such as English, Spanish, Japanese, computer languages such as C or ScratchJr, sign languages, the musical notation system, and tangible languages such as KIBO robotics among others. Natural and artificial languages have a limited set of signs that represent meaning and can be combined in multiple ways following a set of rules. Research has explored the similarities and differences between natural and artificial languages, and interdisciplinary endeavors such as natural language processing and computational linguistics have emerged. Exploring those is beyond the scope of this book.
Here, I am sharing a pedagogical approach to make coding a literacy of the twenty-first century. The goal of literacy is to master the syntax and grammar but also the meanings and uses of the systems of representation. A literate person knows that reading and writing are tools for interpretation and, in time, tools of power. They support new ways of thinking. Echoing Brazilian educator Paulo Freire, literacy is a tool for critical comprehension, for understanding the world, and for actively changing it. He wrote in the early ’70s and ’80s that the written word is a tool for personal transformation and social change. His work inspired mass literacy campaigns as a way to liberate the oppressed. I believe this could be the same with coding. Furthermore, thinking of coding as a literacy give us access to new ways to teach both programming and reading and writing both literacies of the twenty-first century.
Excerpt from Beyond Coding: How Children Learn Human Values Through Programming by Marina Umaschi Bers, published by the MIT Press, © 2022 Massachusetts Institute of Technology.