With the Presidents 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.
Over the last 50 years, designers have been making iterations on Seymour Paperts 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 programming, thanks to the popularity of MITs Scratch. In CSTAs 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.orgs 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.
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.
In the real world, computer programs usually consider a wide variety of inputs at the same time with dynamic if/else logic. Lets take a simple scenario of Computing Wake Up. If its Saturday or Sunday, then we will go outside. If its Monday, we need to pack gym clothes. If its Thursday, we will take out the trash. Every weekday, we also need to go to school. Heres 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.
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.