It has always been my stance that the proper way to teach children the fundamentals of computing is to start with how computers work at the bare metal level, teaching, of course, with all due-care, delicacy, and depth the process demands. Indeed, this was how many, if not most, children learned computing, in the early 1980s 8-bit home PC era.
A close, long-time friend of mine taught himself basic 6800 assembly out of books, when he was eight or nine, in the mid 1970s. Sure, he did not master this 8-biter, until he got to high school. But by then, he was way ahead of his peers who were just being introduced BASIC by a non-geek high school teacher. In due course, he got a PhD in EE, and he now designs radar DSP and radar simulators for the Navy.
The idea that children should be taught general-purpose #programming using visual programming languages (VPLs) irks me to no end.
There are appropriate uses of VPLs, or their lower-dimensional projections, composable GUIs: Smalltalk Etoy teaching tool, audio engineer's console, combat mission planner, search and rescue grid plotter, mechanical design CAD system, circuit design teaching tool, and the like. But these VPLs are highly specialised DSLs, not GPL-pretenders like #Scratch or #UML (as used in MDA code-generation, not as visual documentation).
I am certainly not suggesting that kids today should start learning computing with assembly programming. But what I am saying, loudly, is that kids of all eras are way smarter than the archetypal, self-described intellectual believes them to be. Let us not "Scratch" their eyes out, before they even get to see the code.