Friday 14 September 2012

Using a Worksheet to Address a CS Education Problem

I just gave a midterm exam in my class on data structures using media computation. The results are disappointing, and have prodded me into trying something new: I made a worksheet. Two of the problems on the midterm were tracing problems. One had a posterity method (reduces the possible number of colors in a picture), and I provided some RIB values for some sample pixels: What new RIB values will be in those pixels after this method executes? The second problem had three graphics images, and three programs: Which program generated which image? I had several people review the tracing problems — they weren't trivial.

One of the problems was a code writing problem. I gave them the Sound methods for reverse() and for increase Volume(). They were to write a new method that reversed the first half the sound, then increased the volume in the second half the sound. I literally expected them to copy the bodies of the two loops, and just tweak the ranges on the loops. The average score on the two tracing problems (adding the percentages together and dividing by 200) was 96%. 15 of the 16 students in the class got over 90% on the two problems. The average score on the one writing problem was 75%. Five of the 16 students got less than 70% right. These students are quite good at reading code. Some of these students were unsuccessful writing code.

What happened? The research literature on CS education has lots of examples of how reading and writing skills develop separately. Pete Rollins reported in the early 1980′s that, in several studies, Anderson’s lab at CMU found no correlation between reading and writing skills. Raymond Lister and his colleagues have written several papers about students having one or the other, but not both sets of skills. So, it’s not a surprising result, but it’s one that I need to address. How? The students are working hard on programming assignments. Programming assignments are so heavy – they take so much time, they require so much effort. I do require students to do a weekly out-of-class quiz, often oriented around videos. This semester, two of the quiz assignments were to use Prob lets on for and while loops. That may have helped with the reading skills, but doesn't seemed to have helped much with writing skills.

I decided that I needed to try out one of the ideas in Cs Learning, that is more examples and more lighter weight practice. I made a worksheet for this week’s quiz. The worksheet has four completely worked out array manipulation programs (with outputs provided) and two more sound manipulation programs (for analogous actions as on the arrays), to make clear the connections. There are five more programs that are nearly complete, including all outputs, but with some blanks. The blanks are mostly where range manipulations would take place. The students have to complete the blanks. I’m offering two points each for the 10 blanks, where the first 10 points go towards the quiz grade and the second possible 10 points are bonus points toward the midterm exam. I made very clear that there was no partial credit. The students get them right, or they don’t. I explicitly said that the smartest thing to do is to type in the program, then fill in the blanks such that the output is right. This is a lighter weight activity than programming from scratch.

This is unusual for me, and maybe for other higher-education CS teachers. Worksheets are very common in high schools, and even in higher-education in other STEM disciplines. I’ve seen physics labs and chemistry pre-labs in worksheet formats. I can’t remember seeing them in CS, but I’m sure that somebody has done them. What I’m doing here is something that K-12 teachers are taught to do: See a particular learning problem, then find or invent an activity to address that problem. This is the first time I’ve created a worksheet as that activity. In CS, we tend to assign some more programming to address a learning problem. I’m looking for something with less cognitive load: More example, and more lightweight practice. I’m still figuring out how I’ll evaluate if this worked. My guess is that I’ll have a slightly more heavyweight version of this on next week’s quiz, e.g., I provide a partial program, with inputs and outputs specified, and I’ll ask them to fill in the rest of the program. That will give me a sense if they’re developing the writing skills I hope to see.

Deepa Singh
Business Developer
Email Id:-deepa.singh@soarlogic.com

No comments:

Post a Comment