While chatting with the Obtivians the other day, I discovered that there were 12 kids between them all. “Hey, we should put on a course for them!!” I joked. Couple hours later, the idea of developing a grade school-level programming course had completely consumed my mind. Next week, I’ll actually be starting on this endeavor by mentoring just one of the kids, Dave’s 8-year-old daughter Rose. I thought I’d toss out my initial ideas to you guys before I get too far — I’d love to hear any thoughts you might have!
There are a bunch of questions I’ve been keeping in mind as I work on this:
Code Quality: Is it better to show a child how to write clean code from the start, or is it better to teach a verbose, inefficient manner of coding in order to inspire more appreciation for clean code later? For example, would it be worth teaching the deprecated HTML font tag to help the child understand the benefits of CSS later?
Languages: How beneficial is it to begin with programming languages designed for kids rather than starting a “real” one? Along those lines, which would be the easiest programming language for a kid to learn?
Projects: Is it better to assign projects that mirror real-world tasks (keeping a blog), or should I assign projects that are just for fun? (Here I think of the crazy little MIDI-playing, marquee-scrolling, secrets-filled website I made when I was 15: “Victoria’s Galaxy.”)
Motivation: What’s the ideal source of motivation for kids learning to program? Is it the more intrinsic motivation stemming from solving low level problems and seeing the beauty in well-written code, or the more extrinsic motivation of ending up with a cool product they can show their friends? Obviously, the latter would come more naturally; I’m just wondering which would be the ideal — or if there’s something else that would be an even better motivator.
Health: I tend to believe that in order to really get good at skills that take a huge amount of time and dedication, you basically have to get addicted to the activity for a while… is it possible for a kid to learn these skills without spending an unwholesome amount of time sitting at a computer screen? What are ways to get this knowledge to stick beyond just plain “programming a lot”?
InÃ‚Â aÃ‚Â week or two, I’ll post on the specifics of the curriculum I’m starting to put together.