I’ve just finished teaching our undergraduate algorithms course this quarter. I changed the course quite a bit from previous iterations. This was mostly because I have been designing an online version of the course for our online post-bacc degree (more on that in another post). It gave me a chance to rethink many aspects of the course. One was in how the project assignments were managed.
There were 4 projects. Two were rather large and involved and the other two were still challenging, but not as time intensive. The projects involved: designing, analyzing run times of, proving the correctness of, implementing and experimentally analyzing algorithms using the techniques we learn in class (divide and conquer, dynamic programming, etc.) I had the students work in groups of 2-3. Groups were formed in the first class with the only constraint that each group contain one person who self identifies as being better at theory than practice (based on grades in the discrete math and programming intro course sequences). I did have feedback that the students were thankful the projects were done in groups as they were challenging.
Anyhow, after the first project I started getting feedback of the form “my team members didn’t do any work!” Unfortunately, I didn’t really plan a mechanism for correcting for this. The projects account for 40% of the final grade and looking at the current grades, not all the group ‘leaders’ are ahead based on test performance and not all group ‘slackers’ are behind (as I would have thought). It’s too late to really do much for this quarter, but I would like to be prepared for next time.
I’ve kicked around some ideas:
- Have the groups be randomly assigned and change them for each project. At least then a given student would be unlikely to be always stuck with a slacker, but a slacker could still ride the coattails of the rotating groups. I do this in my graduate class, but there the tests are worth much more and I don’t want to do that for an undergraduate class. Also, the last project is the most difficult, and I would like groups to establish a good working pattern by then.
- Take feedback from groups on who the ‘slackers’ are after the first project and take the ‘leaders’ of those groups and have them form new groups amongst themselves and take the ‘slackers’ and do the same. I think with this the slackers would end up being forced to work or be penalized and the leaders would get a break. It might get complicated though. It would likely piss off some people. Doing so only after the first project might not be sufficient. The groups of ‘leaders’ may not be big enough to form new groups.
- Have the groups distribute the points for each project among the members of the group orhave a group participation score incorporated and based on group members rating each other. I’ve heard of these mechanisms being used but I’m not sure how successful that would be.
- Have a graded question (either on the midterm or as a quick start of class quiz on the day of the project hand-in) that would only be easy to answer if a student was involved in the working of the assignment.
I’d love to hear your thoughts. Or am I over-thinking this and should care less?