My daughter (who just turned 4) seemed like she might like programming, so I started out having her "program" a stuffed walrus, by telling it whether to go forward, backward, left, or right to get to a piece of food. Her natural inclination was to point to where it should go, so I first taught her that the walrus doesn't understand pointing or the word "here", just the directions.
Then we started "programming each other" by telling each other where to go, and I introduced doing multiple steps at once (like "step forward 5 times").
My goal wasn't literally to teach her to program, but just to introduce that way of thinking, which is pretty different from how we normally think in day-to-day life.
She was excited about it, so I got her the Osmo programming kit for iPad. You program a little monster walking around, using physical, scratch-style code blocks. She's been excited about programming the monster every day, and is able to (sometimes) do some short programs of a couple blocks.
If she learns a bit more, my plan is to show her how to program a simple lego robot with scratch, like one that spins a flag when it sees something pink. I love that idea because with 2 lines of code you can make something really happen in the world, plus she'll be able to come up with new ideas for the robot on her own, and learn about the constraints, sensors, and eventually more basic programming logic.
I remember one day in primary school a teacher had us play a game where we had to propose things to take on vacation. People would call out a suggestion, and the teacher would say yes or no.
The aim of the game was to figure out the rule. She said no to 'novel' and 'money', but yes to 'book' and 'currency'.
I've used the same before, I believe also inspired by a similar HN comment. I was delighted to find that it's actually been developed into a complete game as well[1]
However to add my 2c to the conversation how I introduced programming to my cousins and niblings was through baking! A recipe is just a program for a delicious outcome which helps a bit with motivation while also learning a related skill.
For my daughter (she's now 7), I followed this sequence:
- Exact instructions challenge (from YouTube)
- LightBot app on Android
- Scratch with Harvey Mudd College's course on edX
Snap! has some nice features but the community aspects of Scratch are so much better that she's happy building games there.
Same as you, our goal was not to "learn programming", but just to have fun making things move with your ideas. Just creating rather than passively consuming something.
Yes. This is basically teaching how to give instructions to a robot that does exactly what you tell it to - nothing more and nothing less! Recipes are nothing but simple algorithms including branches and loops, may be even procedures.
You reminded me of a robot I had as a kid in the early eighties. It had some rubber keys on the top (similar texture to the rubber buttons on a Sinclair Spectrum, but smaller). You could program it with a sequence of moves (IIRC forward, turn right, turn left, pause).
Then we started "programming each other" by telling each other where to go, and I introduced doing multiple steps at once (like "step forward 5 times").
My goal wasn't literally to teach her to program, but just to introduce that way of thinking, which is pretty different from how we normally think in day-to-day life.
She was excited about it, so I got her the Osmo programming kit for iPad. You program a little monster walking around, using physical, scratch-style code blocks. She's been excited about programming the monster every day, and is able to (sometimes) do some short programs of a couple blocks.
If she learns a bit more, my plan is to show her how to program a simple lego robot with scratch, like one that spins a flag when it sees something pink. I love that idea because with 2 lines of code you can make something really happen in the world, plus she'll be able to come up with new ideas for the robot on her own, and learn about the constraints, sensors, and eventually more basic programming logic.