I first spoke with Harshit (Harry) Shah early this year when he contacted me to chat about teaching computer science to middle and high school kids in an after-school program. A former data analyst and infrastructure manager at eBay, Shah is now focused on CS education. We spoke yesterday about my research project for Mozilla. I was curious to hear his thoughts in part because I think there are substantial challenges (and interesting opportunities) when "techies" move into teaching. How do you translate a deep technical knowledge (is "translate" the right verb?) for novices? What gets kids interested? What keeps them interested?
My notes from our conversation follow.
Building projects: Kids don't engage if it's framed as "learn this technology" -- what engages them is knowledge that they're moving to their project goal. "I want to build X, so I must learn Y." Before we go too far down the path of a particular tool (what I've loosely described as "Scratch for HTML5") we need to ask, "what, at the end of the day, do kids want to learn? What do they need to get achieve that?"
Do kids want to build for the Web? Most kids aren't driven by the tech itself, says Shah, so "learning HTML5" doesn't necessarily interest them. (In part because people don't necessarily know what HTML5 is or what it can do.) Do people know what we mean by Web apps? How do we help people understand that (and understand other components, such as APIs)? Shah is building a custom Python extension to Scratch to plug in an API -- "that gets kids to the Internet part. It doesn't get them to the Web. But still, it is very powerful."
Anecdotally, the kids in Shah's classes are primarily interested in graphic design, storytelling, games and music (so Scratch works well).
What do people need to know?: Shah says he wants his students to know "there is a lot more information outside your computer and you should be savvy enough to leverage that," for mash-ups etc. The Internet and Web are important then (although Shah also teaches some hardware things like Pico boards). The goal shouldn't be to create software engineers, but to "have people learn enough so they can solve problems for their own jobs," so that they can have conversations with programmers, so their imaginations can be sparked. Shah talks about building students' intuition about technology -- not specific technologies but a "feeling for it." Are our teaching efforts "career oriented' or "literacy oriented"? Students want something that is "immediately applicable," and sometimes that seems to run counter to teaching them "the fundamentals."
What should a tool created by Mozilla look like? Shah cautions against a "WYSIWYG IDE." Also, is a "tool" even the answer? Is "the solution" more tools? Or is it "more Hive," more hands-on, face-to-face workshops?