Giving our students the right tools they need to learn computer science.
GUEST COLUMN | by June Lin
With the President’s recent #CSforall initiative and an increasing focus on STEM, all signs point to the need to establish standards and best practices for teaching computer science to young children. The consensus in the industry is that the best way to introduce computer science and computational thinking to young children is through visual programming languages. Get rid of painstaking syntax to give kids flexibility and control of software at a young age.
Iterating on Logo
Over the last 50 years, designers have been making iterations on Seymour Papert’s Logo, resulting in an explosion of slightly different interfaces that teach the same core framework for thinking about programming. The current standard is block based
In the early 2000s, LEGO and MIT collaborated on a project that brought block-based programming into the real world. Students could write a program on a computer and then download it to a robot that they built.
programming, thanks to the popularity of MIT’s Scratch. In CSTA’s K-12 CS Standards, “constructing and testing solutions using block-based visual programming languages” is required for showing competency in programming for K-5.
Another trend in computer science education is trying to reach younger and younger audiences. Research shows that children as young as 5 can grasp computational thinking concepts, so why not go there? To teach children how to code before they know how to read, you need to get rid of text. Recent interfaces like Scratch Jr and Code.org’s Course 1 take block-based programming languages and replace the words with icons.
There is something magical about seeing your code come to life. In the early 2000s, LEGO and MIT collaborated on a project that brought block-based programming into the real world. Students could write a program on a computer and then download it to a robot that they built. Early versions of the RIS (robotics invention system) looked almost exactly like Scratch.
A Lego Mindstorms RIS program:
The 2013 version of Lego Mindstorms has added complexity but largely works the same way as its predecessor. It adds input parameters to blocks that allow students to specify distances, time, outputs, and more.
Martin Exner created this handy infographic of programming interfaces inspired by Logo and more recently Scratch. Many of these derivatives of Logo have been designed around a specific use case – creating games, making 3D storytelling environments, drawing pictures, programming robots, and even controlling virtual fish tanks. While broad in their appeal to different types of kids, many children have difficulty going beyond learning how to build sequences of statements.
Thinking Beyond Logo
In the real world, computer programs usually consider a wide variety of inputs at the same time with dynamic if/else logic. Let’s take a simple scenario of Computing Wake Up. If it’s Saturday or Sunday, then we will go outside. If it’s Monday, we need to pack gym clothes. If it’s Thursday, we will take out the trash. Every weekday, we also need to go to school. Here’s how you would approach this problem through Scratch:
There is a new programming language for kids that takes a different approach from the standard block-based interfaces. In 2015, Wonder Workshop designed a new language called Wonder, a flow-based programming interface. Wonder allows students to focus on the connections between pre-described functional units (or states), building a state machine. The robot is in a single given state at any time; it’s performing some task, and an input causes it to switch to doing something different.
This diagram shows how you would solve Computing Wake Up using a flow-based approach:
By escaping from the linear programming paradigm, this language provides a different approach to computational thinking that allows them to model responses to real-world stimuli in an easy-to-grasp way. Students can more easily take a problem, break it into smaller parts, and use those parts to solve the bigger problem. Students only need to to focus on one state at a time when solving the problem. This process, called decomposition, is a fundamental area of computer science that Wonder is specifically designed for.
In this simple program in Wonder, the robot turns different colors based on different events it senses:
There are many examples of robotics and state machines in our everyday lives, and they are only becoming more and more common. Vending machines give you food when the proper combination of coins is deposited. Self-driving cars know where to move based on obstacles around them. State machines can also be extended to model a large number of problems including language parsing, artificial intelligence, communication protocols, character development in games, and even neurological systems.
As applications of robotics become even more far-reaching, teachers are being trained on block-based programming as the standard for teaching computer science to young children. As it enters more and more classrooms, we should ask ourselves if this is the right direction to go in or if there is an appetite for other perspectives to early computer programming education.
June Lin is Head of Education and Community at Wonder Workshop, empowering every child to question, think, and create. Contact her through LinkedIn.