EdSurge: What Learning Python Taught Me About Computer Science Education for Young Children

Madhu Govind from Tufts University DevTech Research Group, one of the leading reserchers behind the development of KIBO, describes her experience researching computer science products designed for young children.

“In my doctoral work with the Tufts University DevTech Research Group — a research lab focused on how new technologies that engage children in coding, robotics and making can play a positive role in their development and learning—I explore how parents and teachers introduce these technologies to young children.

With the increasing push to create and adopt K-12 CS standards across the country and the growing popularity of CS courses in higher education, I wondered whether taking COMP 10 would make me think differently about what it means to teach and learn coding. Though the motivations and tools used to introduce computer science concepts in kindergarten differ significantly from those at the undergraduate level, I was surprised to find three key takeaways that are universally compelling for CS education across all ages and especially for our early learners.

1. The social-emotional aspects of programming are as important as the content knowledge.
In addition to providing coding instruction, computer science curricula—especially for children—should be designed to support character and identity development and should provide opportunities to build and reinforce character attributes such as persistence, patience and collaboration. For example, teachers should encourage students to talk to one another about different debugging strategies, reframe frustrating moments as a time for critical thinking and build classroom culture by sharing and celebrating student work.

At DevTech, we use the Positive Technological Development (PTD) Framework, which leverages decades of research on positive youth development and offers clarity on how technology, such as coding and robotics programs, can be used in the classroom to promote positive behaviors.

2. Thinking about thinking is hard, but it’s a skill that can be developed.
Programming goes beyond telling a computer what to do. It involves complex cognitive processes of understanding the task at hand, making a plan for delivering instructions to the computer that will be carried out systematically, executing the plan and reflecting on whether the produced output matches the initial goal. This iterative process of thinking, planning, executing and reflecting is then repeated until that goal is met.

Though the process became easier as the course progressed, it was challenging for me and pushed me to reflect on how we teach young children to think in these ways. Although it may seem like this level of thinking is too much to grasp for a 6-year-old, young children can and do engage in similarly complex ways of thinking. For instance, children work on identifying patterns in math lessons, engage in iterative writing and revising activities during writer’s workshops, and break down multi-step directions to play games in gym class. This thinking can be further enhanced with programming environments that are well-designed and developmentally appropriate for young children.

Part of what makes computer programming so daunting is the misconception that things happen “magically” or “under the hood.” That just isn’t the case—different parts of a computer system have different purposes and work together to make the machine function. Tangible tools such as robotics kits can help young learners link these seemingly abstract concepts to the real world. Manipulatives or programming blocks enable children to visualize their thinking by physically laying their ideas out in front of them. Put simply, what you see is what you get. Seeing and touching the blocks and assembling them in a particular sequence helps foster algorithmic and modular thinking, among other important skills. Even more importantly, it develops an understanding of how to communicate with a computer using its language, not our own.

3. The art and power of coding resembles the art and power of literacy.
There are various reasons for teaching computer science, but one approach that has gained traction is the idea of coding as a literacy. Annette Vee, an associate professor and the director of the Composition Program at the University of Pittsburgh, researches the various intersections among literacy, composition and technology. In her presentation of the history of treating programming as a mass literacy, she suggests that programming and literacy have faced similar historical trajectories and questions what aspects might be lost when they are framed as professional activities, accessible to only a few.

My Tufts advisor Marina Bers, who co-developed ScratchJr and KIBO robotics programming platforms, has similarly challenged the narrative of coding as solely being a problem-solving activity. Alongside the members of our research lab, she has been exploring how teaching CS in early childhood can extend beyond STEM and parallel the educational process of teaching foundational literacy skills. What resonates from our lab’s research, and from my Python course, is that coding and literacy are artistic and powerful forms of communication and creative expression.

…If I felt this way, then what might young children experience when they are learning to code? Imagine the excitement in a classroom where young children watch their robots dance on their classroom floor, moving the exact way they had programmed them to do. It’s pretty powerful.

In the last decade, learning computer science has shifted from a “nice-to-have” to a “must-have,” but there is a lot to consider about teaching CS starting in kindergarten. In her book “Coding as a Playground,” Bers writes, “In today’s world, those who can produce digital technologies will do better than those who can only consume them.” Although this statement isn’t as dramatic as author and documentarian Douglas Rushkoff’s “Program or Be Programmed,” it does beg the question of what level of priority CS should take in our education system.

For students, is learning to code simply a means of checking off a box for degree requirements? For educators, is teaching CS simply a means of fulfilling state-mandated standards? Or are we trying to get at something bigger, something more universally applicable and accessible? If so, then I’ve definitely learned one thing from this course: I should have started coding earlier.”

Read the full article.