In our digital age, the objects we use every day are, increasingly, interactive. The algorithms in computer programs dictate how our cars operate, which news our social media feeds display, the people we find on dating sites, the job openings we see, and even the merchandise we’re offered when shopping online. If we don’t know how algorithms work, we will increasingly be left behind in understanding the world around us. Programming, then, is a necessary intellectual tool — a new kind of literacy.
Yet programming, when taught in schools, is introduced as a special problem-solving skill, linked to the STEM subjects (science, technology, engineering, and math). This approach has restricted the power of coding to a limited group of disciplines and the people who study and teach them. But coding is about learning to convey our ideas with a different language that has its own kind of alphabet — symbols — and syntax. If we view coding only as a tool for solving problems, then we ignore the powerful linkage between literacy, language, thinking, and expression. Literacy is about understanding and communicating ideas, about analyzing and interpreting, about developing a critical stance. It is about thinking in new ways. We write to share something we care about. The same is true with programming — I can use code to create an animation or a custom birthday card, for example. In the process, I problem solve, but that is not the end goal. Programming expands our tool set for thinking and sharing those thoughts beyond the textual and the static.
My DevTech research group at Tufts University has spent the last two decades exploring how to teach programming as literacy, starting in early childhood. We created playful instructional strategies and programming languages for 4- to 7-year olds, such as KIBO, a rolling wood-and-plastic robot programmed using wooden blocks with symbols (no screens needed), and the free ScratchJr app, which is driven by symbols and helps kids learn coding even before they know how to read and write.
Our approach treats programming as a tool for reasoning even when doing something as simple as programming a toy robot to dance. That might sound silly, but it’s an act of creation. A child programs a KIBO robot to move, make noise, and carry out other commands based on sequences of wooden blocks with various symbols: a green circle means begin, arrows give directions, a horn makes a noise, a red circle means stop. Each symbol has a bar code beneath it, which can be scanned with the KIBO. So children might read Where the Wild Things Are, then create a series of blocks that tells KIBO to perform their idea of, say, the wild rumpus dance. They learn both abstract thinking skills and how to write an algorithm, since the string of blocks is exactly that.
My lab has found that introducing coding to very young children in such playful ways helps engage all of them, not only those who think they’re good at math or science. When we teach coding as literacy, it broadens access beyond the specialists, which has the potential to reduce gender disparities and the lack of minorities in the STEM professions. In our research, we’ve seen that children who learned how to program developed strong sequencing skills — knowing that the order of things matters — and engaged in creative learning, both important foundations for later academic success.
Last fall, members of my lab were in Virginia, the first state to mandate computer science instruction across kindergarten through 12th grade. We are helping to train elementary school teachers in Norfolk, Virginia, to bring programming into their classrooms.
Massachusetts established standards for K-12 computer science in 2016, but we have no requirements to bring it to the schools — in 2018, less than half of our high schools offered computer science classes. It is time for us to move forward, and to start early. As a literacy of the 21st century, coding needs to be taught at the same time as reading and writing. And teachers need to connect it to children’s personal interests and passions, through playful projects that integrate many disciplines.
Our current approach — treating programming as the exclusive province of a select few — echoes eras when reading and writing were taught primarily to scribes and monks. Programming is useful for everyone and for every discipline. We don’t teach people to write because they are going to be professional writers. We shouldn’t teach them to code simply because we want them to be software developers. Programming is a tool for civic power and social change, just like reading and writing.
Of course there are costs to expanding literacy beyond reading, writing, and arithmetic. Teachers must be retrained. Curriculum, tools, and pedagogies need to be changed. Those changes require political will and imagination. It is time for Massachusetts to explore a path for action. We must not let our children become the new illiterates.