Synchronous Programming for Kids: A Manifesto
Abstract
Many primary school age children find developing games and interactive animations very motivating, and this has been successfully leveraged by several educational programming environments. However, most of these environments, like Scratch and Microsoft MakeCode, are fundamentally based on imperative, Pascal-style programming languages with ad-hoc support for concurrency and events. I argue that this style of programming language, and the burden of encoding state machines that it imposes, does not match the children's intuitions, and is therefore discouraging. Instead, I propose re-founding these tools around synchronous programming languages like Esterel, which, by being centered around the concepts of time, sequential composition, concurrency, signalling, and preemption, match the children's intuitions. I describe a prototype implementation, and argue how using such a programming language would enable schoolchildren to express their intuitions more directly.