TITLE: Accountability in the Classroom AUTHOR: Eugene Wallingford DATE: April 14, 2005 6:00 PM DESC: ----- BODY: I sometimes like to think about ways in which learning to program is like learning to speak a foreign language. Usually, I focus on similarities between the two, to see whether I can use a correspondence to improve how I present an idea. In the middle of class this morning, a difference between the two occurred to me, and now I wonder how I can use this idea to improve my courses on a daily basis. The difference: Students of foreign language are more easily, more obviously, and more naturally held accountable for their level of preparation and their current state of proficiency than are students of computer programming. There has been a lot of discussion recently on the XP discussion list about the idea of accountability. Apparently, this concept is a driving force behind the "new XP" described in Kent Beck's second edition of XP Explained. (I haven't had a chance to read it yet.) Much of the discussion concerns just what the word means. For me, Merriam-Webster's definition seems clear enough:
... an obligation or willingness to accept responsibility or to account for one's actions
Am I obliged to account for my actions and take responsibility for them? Then I am being held accountable. Am I willing to account for my actions and take responsibility for them? Then I am being accountable. (*) My compiler holds me accountable for the correctness of the code I write. Each time I compile, I find out if my program is syntactically correct. My unit tests hold me accountable for the correctness of the code I write. Each time I run my tests, the green bar tells me that my program is functionally correct -- or the red bar tells me otherwise. Of course, I have to compile my program (at least once :-), but I am not obliged to write and run tests. One of the beauties of the agile programming practices is their demonstration of programmers' willingness to be held accountable for their time and their efforts. Obligation is supplanted by willingness, which opens the programmer to a new level of growth and performance. The compiler holds students accountable, too. As they learn and use new ideas, the compiler and their testing give them a measure of their accomplishments. So, the more practice they get -- the more code they write, the more projects they do -- the more feedback they get about their level of proficiency. In a typical computer science course, the instructor has only a small number of opportunities to gauge each student's development. In my most programming-intensive courses, I ask students to write only 12 programs for evaluation. That is quite a lot in a fifteen-week semester, but it's not enough. I wish that I could interact with each student every day, gauging preparation and proficiency, folding what I learn back into my instruction. What do I do now? I give students in-class exercises and discuss solutions every day. But some students work on the exercises only half-heartedly, if only because the absence of a keyboard and a compiler makes writing much code tedious. The discussion usually goes pretty well, but only a small subset of the students tend to participate actively. In class this morning, the inadequacy of my seemed especially obvious. So, my mind wanders... How would a course in spoken German or French differ? My in-class exercises and discussions pale in comparison to what a foreign language teacher can do so naturally: start a conversation with a student! A classroom discussion can grow quite easily to include many students, because each interaction with a student exposes the student's level of preparation and proficiency. Human conversation works that way. I can draw students into classroom discussions, but there is a big difference between writing code and talking about code, even talking about writing code. Someone can talk about code, or the ideas underlying code, even if they have difficulty writing the same. Students who are willing to account for their work sometimes find that they are not asked to. Students who need to be obliged to account for their work -- who would benefit greatly from being held more accountable -- come to count on not being so held. This line of thought was triggered today by my recognition that a couple of students came to class unprepared this morning. A couple said so, honest that they hadn't studied the reading assignment yet wanting to ask questions. A couple tried to blend in, relying on the fact that they would probably manage to get by. I wasn't in the mood to call them to account, but I was in the mood to think about the attitude itself. Owen Astrachan uses a great strategy for driving classroom interaction that has a side effect of holding students accountable for the time they spend in class on exercises. He passes blank transparencies out to groups of students working together on an exercise. They write their code on the transparencies. Finally Owen collects them and puts them on the projector for everyone to see and discuss. I don't know how often he makes the authors of a slide known to the class, or if he ever does In either case, I think that this strategy creates an environment in which students feel accountable. Some students are intrinsically motivated to learn. They hold themselves accountable no matter what the instructor or other students do. But some university students are not quite ready for this level of autonomy. Some instructors and universities seem to adopt an attitude of sink-or-swim, leaving it to students to figure out that they have to take control of their own learning. In some contexts, this is the right thing to do. Ultimately, each student is responsible for his or her own learning, accountable only to themselves. The role of a teacher, though, is more I think. Especially when working with children and even university freshmen, a teacher should help students learn to hold themselves accountable. I'd like to be able to readily recognize students who are struggling with material or not doing the work so that I can intervene. My German teachers could readily assess my level of preparation and proficiency by walking into the room, saying, "Guten Tag, Eugen! Wie geht's?" -- and then simply listening. Strategies like Owen's may be the best we can do in computer science, so we need to share them when we have them. When you have to write your code on a slide and give it to the professor for possible display in front of the whole class, you have a built-in accountability partner. The success of groups such as Alcoholics Anonymous is founded in large part on relationships in which one person helps another to hold himself accountable. Sometimes, just telling someone else that you are quitting smoking or trying to curb your profanity can be enough external support to do a better job. Who wants to disappoint a friend, or look weak? You might even tell the Internet. When a student signs up for a formal course in a topic, one element of the action is to put themselves in a formal accountability relationship. The teacher and the classmates act as accountability partners. Obviously, this isn't the only responsibility of a teacher, nor even the most important, but it is a good part of the deal for the learner. This is wandered a bit from thought that triggered all this, which was something like, "If a student went to a French class as unprepared as some students come to their programming classes, they would be found out quickly. That would straighten them up!" (In moments of weakness, I sometimes surrender to temptation.) But ultimately I am motivated by a desire to do a better job as a teacher. It occurs to me that I have written a similar entry before... ---- (*) I've not gotten into the mailing list discussion much, but this seems to be what Kent asks of himself and other programmers. It seems pretty reasonable to me, and at the heart of many agile development practices. -----