Teaching programming is extremely difficult, I think because it is a learning staircase instead of a learning curve.
For example, `color = input("what is your favorite color: ") .. print(color)` seems like the variable name is somewhat related to the content. The first time I saw my daughter "get" variables was after some time she just started naming them `kj`, `jdh`, `hdj` when she was going to use them immediately after.
Wow that is an awesome comment I think maybe even teaching people in languages such as shell which specifically and explicitly state when variables are being referenced (prepended with the $ symbol) would be an excellent technique in teaching to let students understand the different syntactics of programming, I think syntax highlighting would also help a lot, cause it would let kids (on their own) figure out that all text in pink is of the same groups and refers to variables, while code in blue is a function, therefore a ‘group of code’. Of course, I’d maybe explain first what data types there are and really what a computer is, because many people don’t necessarily understand what is happening behind the scenes and do not see it with such technicalities, maybe the majority say about computers that they ‘just work’.
The one thing that helped a lot, was teaching HTML. How td is child of tr and sister to another td, and it has a child of h1, or how things have properties border=2 and etc.
It helped with understanding where does code belong, how the code in the for loop is related to the code above it and etc.
I also spend time on things like how to steal someone's cookie, and what is a cookie day 51,52,53 (https://github.com/jackdoe/programming-for-kids#day-52-basic...) and also we spend a lot of time touchtyping, so her thoughts easier to be expressed through the keyboard.
Also tearing down commodore64 and showing the actual memory address space in physical manner helps, the variable color points to somewhere >here<.
We are spending about 50 days now only doing lists and for loops, I write the next day's lesson after the current lesson finishes, and I try to see what she grasps, and what is somewhat interesting and prepare for tomorrow.
That’s just great, what a great parent you are! I personally do not know much HTML or even much about web dev in general but I suppose it’s worth a try.
> Did she have experience with board/card/pen-and-paper games before? Dice games?
We did play https://www.thinkfun.com/products/robot-turtles/ quite often, since she was 6 or so. and we play a lot of ticket to ride, and some memory games (like Lumina). We don't play dice games though.
> What was starting typing speed and how it goes now? Do typing lessons causes frustration?
I have not actually measured the speed recently, as we use our own programs to train (she enjoys using her own programs a lot), but she is at the point that she is faster to type with 10 fingers than with 2.
> Do typing lessons causes frustration
Not at all, they are a lot of fun. I enjoy them a lot as well. Today we were using the program we wrote yesterday (https://github.com/jackdoe/programming-for-kids#day-100-basi...) and we tweaked it a bit to have 'pause/start' and she wanted to continue even after the end of the lesson.
> Have you noted some prior math skills? I see lessons start with strings but then move to "geometry" stuff
She is good in math in general, but at her age math is kindof boring. But geometry I think is fun, especially when you think of 'how do two rectangles collide', and since she plays a lot of roblox, the whole game is made of rectangles, so it is very relatable.
For example, `color = input("what is your favorite color: ") .. print(color)` seems like the variable name is somewhat related to the content. The first time I saw my daughter "get" variables was after some time she just started naming them `kj`, `jdh`, `hdj` when she was going to use them immediately after.
I am writing a log of how the lessons go: https://github.com/jackdoe/programming-for-kids