A colleague of mine does a lot of teaching younger folks, and something they’ve had great success with is quite similar to this: writing “programs” that their parents execute during the class. The kids have fun telling the adults what to do, and they incidentally learn a bit about algorithmic thinking.
Years and years ago when I was learning this stuff a book I had was big on stepwise refinement, which is basically the concept of breaking a large task down into smaller tasks, and breaking those tasks down into still smaller tasks, and so forth.
It’s still amazing to me the number of people for whom the bleeding-edge 1970s techniques of structured programming are still out of reach. :-\
Education like this helps fix that!
Very interesting approach. I can imagine it being fun but don’t know how much will “stick”.
Algorithms are a pretty advanced topic for novices. When we cram so many subtleties into their heads they use up all of their working memory to hold the concepts/model. This leaves no room to process those concepts, reflect on them, and commit them to long term memory (aka, learning).
Eriksson developed & popularized the concept of deliberate practice for honing a skill. A big part of it is that the learner starts with a tiny subset that enables a real-life performance. They quickly realize that practice leads to perceptible improvements in real-life performance and they keep at it until they master the skills one at a time. This is probably why guitar lessons start with holding a guitar and plucking a string as opposed to a fuzzy exercise rooted in music theory.
Perhaps we look back at our first programming attempts and are embarrassed by the code we were writing then. We may vow to teach kids “what programming is really about”. I wonder if it’s best instead to just teach them the same way most of us learned it, by reading commands from a magazine/book/tutorial, faithfully typing them, executing them and seeing actual stuff happen on the screen. Theory can be introduced along the way, as it starts to become beneficial to their real world performance.