I gave what I thought was an easy quiz last week. Four questions. Two asked for a short program. Two gave a short program and asked for the coding mistakes to be corrected. All with pencil and paper. After giving the quiz I made the key. After 30 years of doing this you would think I would remember a cardinal rule of quizzing – make the key, then give the quiz. Yes, the quiz was easy, especially after I sat there and thought for a minute or two. The difficulty is the difference between programming with a pencil and programming with the IDE up and running in front of you. When I code I tinker as I go. I stare at the ceiling or doodle some notes of issues I see. I try something, see if it works and if it does I then look for a possibly better solution. Taking a quiz is not the same as writing a program. With a quiz there is usually a time factor involved and a pressure factor. Both have a tendency to mess with my programming skills so I can imagine what it does to the kids’ programming skills. In real life I have never had to look through a program on paper to find errors. Coding errors are indicated by a number of things. The program does not run, the program runs but gives the wrong answer, the equivalent of the blue screen of death occurs or, given the language, the IDE flags the error to indicate your typing ain’t so hot or your understanding of the syntax is wanting
Giving a quiz where the kids have to write a quick script by hand just seems so logical to do, especially to a math teacher like me. It should test knowledge of the language, program design, algorithm development, and a couple other odds and ends in there. After deep consideration I think a quiz of this type does very little of the above. Maybe it tests quick knowledge of the language. At this stage (first and second semester) the kids are still not at the comfortable stage with the language. How good were you in the first semester of French? (Is there a correlation between learning a foreign language and a computer language? Sort of, especially if you talk to those that want to classify computer programming with the foreign language department. Gurk.) Do I really care about quick knowledge of the language? Not so much. I want them to be able to solve problems with the language and speed really is not that big a deal. Program design is next. Program design should take some time and some tinkering. I usually do not get a well designed program until after I have gotten something working and sit back and look at it. Then I get the “I wonder if” brain cells working and start experimenting. That is what I want my students to do. Tinker. Is there any algorithm development in 10 line quiz scripts? Again, not so much. More like “how did I do this last time?” I think I am going to bag hand written quizzes. I will give quizzes where they can use their computers and their previous programs for reference. It still will not address what I think the goals of a programming class should be but it keeps the kids honest. A quiz does require they do their own work. It eliminates “collaboration”. Of course I promote collaboration when they are doing programs so there is a bit of a contradiction there but the quiz does catch those that are just along for the ride.
Does a pen and paper quiz/test fit in to a programming course at all? I can see them for things other than coding problems but I am just not a fan of the time factor that is usually part of a quiz. Now if I can just remember this the next time I feel the need to give a quiz.