I saw a talk today. Once again, a Computer Scientist, who must necessarily play the role of Educator, had a Great Idea about Education:
Let’s make the exams easier to grade. And better yet, let’s get rid of assignments in the process.
In the process of giving his talk, he almost reinvented Bloom’s Taxonomy, which was quite depressing. The purpose for speeding up the marking of exams, largely, was motivated by his desire to have more time to do his research. I love how so many [insert scientific discipline here] faculty think that they know everything about education, and their standard rules of academic rigor don’t apply when they talk about (undisciplined, unresearched, atheoretic) things like teaching and learning.
While a casual Google search for models of assessment may not have turned up Raymond Lister’s paper regarding criterion referenced assessment in CS1, or even his paper entitled First Year Programming: Let All the Flowers Bloom (both co-authored with John Leaney), the speaker should have read both, but would have benefitted from neither. Why? His premise was that 1) grading homework takes too much time (away from research), 2) you’re better off with just one exam at the end of the year, and besides, 3) there’s no way you can inspire and provide a framework for improving all 173 students in a class. If you had a class of five or six, you could help them… but with that many, all you can do is hope they pass.
I’m sorry, but I disagree.
I fell upon Dave Thomas’s weblog this evening (he’s one of the Pragmatic Programmers). In light of the ideas stated in today’s presentation, I want to join two ideas here: one from Raymond, and one from Dave.
From the abstract of Lister and Leaney’s Let all the Flowers Bloom:
| We describe our criterion-referenced grading scheme for a first year programming subject, which has been designed to allow all participating students to achieve their full potential. Traditional norm-referenced grading schemes, where all students work on the same assessment tasks, result in tasks that may be effective for the middle-achieving student, but the tasks do not allow the weakest students to engage effectively, nor do these tasks stretch the strongest students. |
The core idea in the paper is that you set assessments for students to achieve throughout the semester, each a kind of “hurdle” that, after clearing the first, they may attempt the second, and so on. The first hurdle is based on their ability to recall and comprehend information. They then must demonstrate their ability to apply it, and then lastly their ability to use that information in new ways, evaluating it’s new role in new contexts. It gives weaker students clear targets, and has the opportunity (at the far end) to challenge students you would otherwise not know what to do with in the classroom (because they’re just so damn good).
I thought of these papers when I stumbled onto Dave’s weblog, where he presents the idea of code kata. To understand these, it’s good to first understand what a kata is. I searched for a definition for the word kata, and found a pleasing one at 24fightingchickens:
| Kata is a Japanese term meaning mold, model, style, shape, form, or data-type. A karate kata is a set number of basic techniques arranged in order. The closest relatives of the karate kata in other sports are shadow boxing, dancing, and gymnastics floor routines. The karate player begins by standing at attention, bowing, and then by stepping in some particular direction throwing karate techniques. The kata are pretend fights, and yet each is not representative of a single fight. Rather, they are more of a biological data storage method that uses compression and encryption to put as many examples as possible into the smallest amount of human memory possible. |
Dave suggests something similar for programmers:
| How do you get to be a great musician? It helps to know the theory, and to understand the mechanics of your instrument. It helps to have talent. But ultimately, greatness comes [from] practicing; applying the theory over and over again, using feedback to get better every time. |
Kata are critical to the advancement of students in many martial arts traditions. In some respects, they are a criterion referenced marking scheme: you cannot possibly become a black belt without first progressing through all the belts before, and to do that, you must demonstrate your mastery of the techniques at each level previous; in part, you do that by performing kata.
In computer science, we give assignments to our students, and we set exams, but what do they prove? If you have a course (module, whatever) with just one exam, and your students do well, have they demonstrated that they know how to take an exam, or that they’ve mastered the learning outcomes stated for that module? What is the appropriate assessment model for an introductory course in computer science that follows the common and traditional approach of having students program?
If you worked code kata into a criterion referenced marking scheme, would the kata be the same for all programming languages? Why? Why not?
I’ll have to think more about kata; I think there’s something neat at the intersection of these ideas.