The big caveat here was that the students already had:
1) Two days of Python. (In other words, programming wasn’t brand new.)
2) Two days of HTML/CSS. (So writing for the web wasn’t brand new.)
Overall, I’m going to say that the lesson plan was a stunning success. The kids picked it up remarkably quickly. There was enough open-endedness in the activities that the faster kids had stuff they could work on, and most of them managed to get their very own image search engine working by the end of the day, which is awesome.
There’s only three big things that I’m going to change when I run this next time in August:
1) I don’t think they reeeeally understood how APIs work; at least not deep in their bones. What I mean by this is that they were able to rattle off the definition back to me, but further probing revealed that I don’t think they actually understood that when they called the flickr api, flickr was giving them information that they did not have hardcoded anywhere. They were talking to a different computer. They were one half of a two-computer conversation. That said, they’ll be writing their own backend later this week, so by then I’m sure they’ll understand it better.
2) I relied pretty heavily on “this works just like foo in Python”. While that’s fine for teaching these kids, it means that the curriculum isn’t reusable with a group that doesn’t have those two days of Python experience, so I want to re-think this a little.
3) A few kids were pretty confused at the end about best practices in terms of when to use HTML versus CSS versus JS. This is a reasonable confusion since it is confusing. :) But I want to give some thought to how to better break down some rules of thumb for them.
So there you go. One student later blogged: