I learned basic trig around ~10 because I wanted to make spacewar/asteroids-like games, which led naturally into matrix math, later on.
Parsing also interested me around ~12 (text games this time), but while I made some mechanical attempts, the theory never clicked until much later.
Sometime around that time I learned about recursion by reverse-engineering the display code for a tile based first-person maze crawler one of my father's colleagues had written. (yes, fib should've been simpler, but drawing those perspective walls was way more concrete)
[perspective was luckily something I'd been introduced to in second grade, so it was old hat at this point, and the scaling math was straightforward; the only jump I needed to make was grokking that having drawn the walls visible from this square, one could use the same routine, with fresh parameters, to draw the walls from all the still-visible neighbouring squares, etc. Unfortunately z-buffers make this entire approach obsolete; but maybe he'd take it as a challenge? this is trivial with z-buffering, but how might it even be possible without?]
Might Processing sketches (or whatever the new shiny might be) interest your kid?
Personally, that's how most of my math learning came. As a teen, I started to program and wanted to understand mathematics tools to solve specific problems, so I learned trig, Bezier curves, cryptography, number theory, etc like this.
Then later between my love of point and click adventure games and puzzles plus the fact that I had good foundations in maths, pure mathematics problems became increasingly fun.
Parsing also interested me around ~12 (text games this time), but while I made some mechanical attempts, the theory never clicked until much later.
Sometime around that time I learned about recursion by reverse-engineering the display code for a tile based first-person maze crawler one of my father's colleagues had written. (yes, fib should've been simpler, but drawing those perspective walls was way more concrete)
[perspective was luckily something I'd been introduced to in second grade, so it was old hat at this point, and the scaling math was straightforward; the only jump I needed to make was grokking that having drawn the walls visible from this square, one could use the same routine, with fresh parameters, to draw the walls from all the still-visible neighbouring squares, etc. Unfortunately z-buffers make this entire approach obsolete; but maybe he'd take it as a challenge? this is trivial with z-buffering, but how might it even be possible without?]
Might Processing sketches (or whatever the new shiny might be) interest your kid?