Question of the Day
Three weeks ago, I attended the Grace Hopper Celebration of Women in Computing for the K-12 Computing Teachers Workshop. As with most conferences, the biggest impact came from conversations between sessions. Two colleagues I’ve known only virtually, Hélène Martin and Mike Zamansky, were there and it was great to meet them in person. Based on Hélène’s talk we’ve decided to all try to blog more as a way to keep in touch and share what we’re doing.
Ria Galanos (Georgia CSTA co-founder and a fellow instructor in Google’s CAPE program) was planning to write something about all this on the CSTA blog — so I’m calling her out on the internet. I’m not just naming Ria to make her blog, but also to thank her for an idea she shared with me. I was complaining that I don’t know how to reach some of my students who get lost early on in the course. Ria said that in her APCS class, she has students write a method on paper every day and this formative assessment has cut down on the amount of nonsense code she sees. I decided to try it.
For the past two weeks now, my AP students have written the body of a simple method every day at the start of class. They have 5 minutes with no notes or other resources. The problems are supposed to be quick review — like CodingBat on paper. For example, one recent problem said, “The method charCount takes an array of Strings and returns the total number of characters they contain.” The prompt also gave two example inputs with expected outputs, and then asked them to write the method body.
Later, I sort the answers into three categories: “got it” which means the code as written would compile and produce the correct answer for all inputs, “close” which means there’s a minor syntax or logic error but the overall answer shows an understanding of a possible solution, and “way off” which means confusion about how to approach the problem or major syntax misunderstandings.
Here’s how we’ve been doing:
What does that mean? Well, partly that practice helps. In the first week, I gave problems that all required a loop controlled by an parameter. Students got better at solving them. In the second week, I started giving problems with an array parameter which confused a lot of them. But after a few more of those kind of problems, results improved again. Introducing a twist (like I did in the most recent question) reveals that some of the “close” answers are just mimicry or pattern-matching and not durable learning. Long-term impact or improvement is currently an unknown. You can download the PDF of my first 10 questions here.
Despite the unknowns, there are three things I like about this practice: One, it adds some routine to the day and establishes a space to talk about the little details of programming. Today we talked about the confusion that can arise from using “i” as a non-index variable name. Two, I like getting regular feedback about who is where in terms of their understanding. I can talk to individual students about their work without the external force of a grade weighing on us both. And three, I like the reality check — we’re not where we need to be yet as a class.
I wouldn’t have started doing this without Ria’s suggestion. Teachers of most other subjects have a whole department to talk to about what they’re doing and share their results. Since CS is a small elective at most schools, our professional learning community has to take place online. Good thing y’all know how to use computers!