I want to add to this list for something that I teach to kids of similar ages: counting to a thousand on your hands. This is natural for any computer programmer, but there's some key aspects to it that help with math education.

This is quite fun for them as your question of "Do you know how to count to a thousand on your hands?" appears like magic or a superpower to them. So I demonstrate the beginning counting to 20 or so (quickly moving through 4 and 6). Then I start to ask them to predict certain unseen configurations (i.e. zero shot generalization). Re-demonstrate when failure to predict. Once the pattern is successfully learned, then I present a quiz/puzzle, and ask how many fingers "this many" is (all fingers unfurled). Always stumped, I provide the hint "if I had an additional finger and that finger were open and all others were closed, how many would that be? Can you figure out the other number from here?" It takes time, but they almost always get it.

The beauty of this is that we have a low barrier to entry, as the kid just needs to know how to multiply by 2 and know the names for numbers up to 1024. It surprisingly has many avenues of thinking that can help a kid better generalize concepts of math while still being entertaining (similar to concepts in this article). First, we teach the kids that there are multiple representations of things, and that we need to formulate things to match our goals. That we can break away from the common and expected thinking that most people have to gain "super powers" (i.e. not count like most people). Another important aspect is the above puzzle, where we specifically teach them that there are often better ways to go about solving a problem if we can find patterns. Rather than brute-forcing your way through this (summing each finger) you can exploit the iteration pattern to know that hinted at position is only one away from the desired. Frame of reference is such a crucial concept to mathematics and is at the root of solutions to many famous problems. Obvious post hoc, but inconceivable a priori.

We can even go quite deep and talk about proofs and how to design algorithms! I'll explain the algorithm identical to how we would perform a proof by induction (this is not how I teach kids, at the beginning):

k0th step: starting palms facing user, and an initialized position where all fingers are closed (thumb is a finger and at left most and right most positions). Starting from the right, increment the right most finger (thumb)

knth step: start from the right most position. If finger is closed, then unfurl. If finger is unfurled, close it and attempt to increment the next right most finger recursively following this condition.

There's more that you can build off of this one concept and similarly that with the topics in the article. What I've found is that which ever "game" the kid likes best is the one you should focus on and formulate your basis around. When they have difficulties with one game you use a different game that they are successful at to teach the difficult one. After all, math is a language and so many things can simply be rephrased.

I find that one of the difficulties many have with math is that the internalize it as quite strict. That it is often taught "this is the way," with no other methods accepted and thus people gain quite low generalizability of the concepts. Something that "word problems" are intended to resolve, but this approach is quite brute forced and more akin to how one might teach a machine rather than a human. This is coupled with the fact that so many are at a young age taught by people void of passion for the subject. This dispassion only passes from teacher to student (I'm sure many people can remember the breath of fresh air if they were lucky enough to find a teacher who loved math and encouraged the creative side of it. Honestly, that's how I came the love the subject and prior to that Junior in High School class, I hated the subject despite being good at it and in advanced classes).