Abridged version: I'm making some big shifts in my work in the coming months (read: focusing my energies rather than what's become the scattershot of freelance writing). I'm thrilled to say that this will mean more time for Hack Education, thanks in no small part to a research and writing project I'll be undertaking for Mozilla.
It's part of the organization's larger learning and literacy efforts, and my piece will involve researching practices and pedagogies and interviewing teachers, learners, technologists about tools for teaching programming for the Web. Specifically (or rather, conceptually), I'm asking the question: Do we need a "'Scratch' for HTML5?" All my findings and conversations will be written up here on this blog.
How to Teach CS to Anyone
At Educon last month, I attended a session about "how to teach computer science to anyone." As someone who's trying to learn programming herself and spends a lot of time thinking about both the "teaching" and the "anyone" in the construction of that particular session title, I felt I had to attend.
Science Leadership Academy's CS teacher Mark Miles led the session, in which he described some of the challenges he faced as a new teacher offering computer science elective courses to high school students. His was an interesting story (I'm not sure how typical it is -- I'd love to hear feedback from other CS teachers on that account): a CS and math major himself, he spent time as an engineer before becoming an educator. And as he described his first year of teaching, it seemed clear that he was trying to replicate -- or perhaps the right verb is "translate" -- his undergraduate CS experiences into the high school classroom. It didn't really work out so well.
Miles has since changed the curriculum for his classes substantially, using tools like Alice to help introduce computational thinking before moving into teaching a programming language. He's also including e-textile projects with the Lilypad Arduino, and no doubt the idea of creating wearable computers likely appeals to a very different audience than the typical CS crowd. All good stuff.
Does Everyone Need CS?
One of the things that struck me as I listened to Miles and the other educators talk about the work they do to get students interested in CS was the very CS-ish-ness (as in the academic discipline) of the discussion. This isn't necessarily a bad thing, I should note, nor a surprising one considering it was a room full of, well, computer science teachers.
During the session, we played a little game with binary numbers and notecards (CS as math). We discussed the eternal question of "which programming language should you start with?" (CS as engineering) We created a long list of resources and tools for helping kids learn computational thinking both online and offline (CS as theory and design), and we even came up with quite a nice bibliography of CS-related Young Adult fiction -- ok, that last bit was pretty un-CS-y. [Link to presentation]
But it felt as though even if we addressed the ways to make the CS classroom more appealing for students to join (by using friendlier introductory tools and lessons, for example), we were still operating with the assumption that CS in high school is a path to CS in college is a path to computer science as a profession. And sure, maybe it is. But I'm not sure we assume the same with every other class in high school (particularly when it comes to electives, which for the vast majority of schools, computer science remains). Yes, there are students in English class who will pursue English majors, and there are students who take high school biology who go on to become biologists. But the classes aren't viewed as (or taught as) a funnel; rather there's a certain amount of knowledge and skill that we believe every student should take away, no matter what major or career they eventually pursue.
Of course, we've been arguing for decades now whether computer science should be a requirement in school at all, or if -- as it is in most places where it's taught at all -- it should remain an elective. We've been debating too what we even mean by "teaching technology." Do we mean computer science? Do we mean "computational thinking"? Do we mean teaching how to be a software user, or do we mean teaching how to be a software engineer? (I always want to quote Kipling when we are faced with these sorts of dichotomies: "and ne'er the twain shall meet.")
What About the Web?
There are any number of tools available now for teaching kids (any non-programmers actually) to code. (Here's one list. Here's another.) And while some of these are available on the Web, they aren't really about building for the Web.
And again, let's ask: do we need a tool to help teach Web-building and HTML 5? Is building for the Web different -- conceptually, programmatically, and so on -- software engineering?
More questions: if we take Scratch as a model here -- as a tool that teaches "computational thinking" rather than programming per se -- is there something about "Web thinking" we'd also need to account for?
What skills would a "Scratch for HTML 5" need to include? How would the scaffolding of the knowledge-gain work? (i.e. where do you start, how do you "get there") How technical would it need to be? What technical knowledge would be assumed, if any?
For those who say "Yes, an "HTML 5 for Scratch" should be built!" let's also ask "Should Mozilla build it?" And if so, then what? Where do we go from there?
Where I go from here: reaching out to lots of folks to talk to them about all these questions.
Image credits: Boston Public Library