More than once I’ve finished or half-finished a lesson knowing that some kids understood most of it, some really didn’t get it at all and I didn’t get enough information during class to really understand where I should go with things the next day. If you back up and review, you bore the kids who understood already and run the risk of teaching the same ineffective way you did the previous day. If you plow ahead, you will really lose the students who were barely understanding the day before.
In this situation, I sometimes do a code-analysis card sort. I write a handful of code snippets and produce output from them. Mix up the code and outputs, partner up the students and ask them to match code to output. It takes less than 10 minutes, and then you have a whole-class discussion where you ask groups to report out. What’s a match you feel confident about and why? What is a match that gave you trouble and why?
Here are a couple of my card-sorts from this year’s CS Exploration course, in which I have been teaching Processing.
In this card sort, there are four function definitions, four function calls, and four descriptions. The students’ job is to match a definition to a call to a description. Before making copies, I put a letter (A,B,C,or D) on each function defintion, a number (1234) on each call, and a symbol on each description.
The card sort is really simple because each function has a different number of parameters. If a student can recognize that the definition with three parameters matches the call with three parameters, they can do the sort. But it creates good discussion when you talk about why the matches work, what the parameters mean, and how we know the descriptions match the definition and call.
I also created a Function Kahoot! quiz to do before or after.
Next I have a card sort on looping. It only focuses on While loops. The task is to match the code with the output.
The cards are here:
Again before I make copies, I label the code with letters and the outputs with numbers to make it easy to report out what matches the students made.
The discussion on this sort usually hits on two ideas. Is the x-coordinate or y-coordinate changing, and how do you know? How do you know how many times the loop will run? Good tie in with some linear algebra here – the starting value has some connection to y-intercept and the increment each time has a connection to slope or rate if you choose to go there. There is one card that will freeze the program because it gets stuck in an infinite loop, and it’s an important one to discuss as I always have students that take some time to understand the idea of the infinite loop.
I also have a Kahoot! quiz on variables and expressions, without loops/conditionals or anything like that. Might be a good review activity.
I’m working on adapting some of my older Kahoot! quizzes from the Khan Academy Processing JS to the stand-alone Processing, but here they are if you are interested in the Khan version.
Khan Kahoot! on conditionals and booleans:
I had this one to quiz students on the draw() loop and how it affects variables. I don’t think I’ll adapt it for Processing but it might be useful to someone.
What are some of your ideas for differentiation, discussion, extension and review?