Tuesday, August 04, 2020

Programming Projects for Learning or Grading

The purpose of school work is to get good grades. Well, at least that seems to be a common view on the part of students. Most teachers will tell you that the motivation for students to cheat is that they are lazy and still want to get good grades.  The recent posts by Mark Guzdial  (linked to at Changing How We Teach Computer Science) have sparked a lot of comments on his blog and on Twitter which had sparked some thoughts on my part.

I have long believed that projects are a great learning exercise for students. I haver become less enamored with them for grading. Cheating seems to show up all to often. Often it is hard to prove cheating because projects are to short, variable names are too likely to be the same logically, and there are limited ways to solve them. I have seen the most creativity and the least cheating (provable or otherwise) on larger projects where students were all doing something completely different.

A common thread in the comments I have been seeing recently is that students cheat not because they are lazy but because they don’t know how to solve the project on their own. This idea resonates strongly with me.  I see a lot of satisfaction on the faces of students who successfully complete projects. They tend to actually enjoy the process when they have success. 

Over the last several years I have increased the number of other means of assessments including multiple choice questions that include reading and understanding code. Comparing quiz results with project results has been interesting. Some students show close correlations between quiz grades and project results. Other students not so much. While I haven’t conducted a rigorous or scientific study by any means, my observations suggest to me that students are copying the projects of others because they haven’t gotten a strong enough grasp of the material. 

I’m pretty convinced that evaluative instruments that require the reading and understanding of code are better tools for understanding what students actually know than looking at projects. That is not to say that looking at projects is useless. To the contrary, students who work hard against the struggle show what they know and don’t know in their code. A project that doesn’t work correctly give a teacher a lot more information about student understanding than a project that works perfectly.

In my ideal world, I would give each student a different project for every concept I want them to demonstrate knowledge of. That is clearly not possible and certainly doesn’t scale to large classes. I’d love to have a way to watch student progress on a project. What do they try and what do they do when things either work or don’t work. I don’t know of a good tool to that right now or even if it is practical. I guess for now teachers will just have to watch students closer.And use other tools for grading and for determining what students actually know.

1 comment:

Anonymous said...

The assumption of laziness hides a wide range of reasons why a student hasn't done the work expected of them. When I've taken the opportunity to talk to students, I've discovered some working essentially full time to fund their equally full time studies; some whose time is filled supporting younger siblings, sick parents or frail grandparents; some who are struggling to keep up with the subject but can't afford to spread their course over more semesters. Then you've got students who simply didn't engage or take things seriously at the start and are now out of their depth and desperate not to fail. And finally there's the clash of scheduling of multiple subjects, such that all the big assignments happen at once and a student doesn't feel able to to justice to them all.

The recurring theme here is a lack of time, albeit in some cases because the student was "lazy" initially or lacked time management skills, and squandered the time available (and when I look back on my own student days, this all seems very familiar). This is a hard problem to address, since we can't simply be more creative in the activities we set. The best approach I found was to spread a project out, and check in regularly with students on their progress. But this depends heavily on the face-to-face time that students spend with their tutors, and the quality of those tutors. This casually-employed workforce is a resource I worry is being eroded by shrinking budgets at many universities.