I have not been assigning group projects until the students reach CS 132/142. The reason for this is, in the first two classes, 115 and 132/142 there is a tremendous spread of interest and experience. With this amount of variation, most group projects end with one student doing most of the work or at best each student doing half on their own. Even if each student does half this is problematic because every student needs to practice every skill taught in the first couple classes.
Group work is a skill. Students need to be trained how to work effectively with others. Also, all students need to be invested enough in the class to keep trying until the end of the quarter. By CS 132/142 students are invested enough to work together.
Part of the goal of these group projects is to alow students to apply the knowledge they have gained throughout the class to a domain they care about. With that goal in mind, I have given them a set of technical requirements that I believe everyone in the class can achieve. Some groups go far above and beyond the requirements, others just meet them. This allows there to be a big range in projects while not hurting the grades of students who have less prior experience or free time. As long as they meet the required technical pieces described in the instructions, they will receive full credit.
There are several things necessary to have a productive group:
In order to help groups be productive and successful I have designed the following system:
In order to help students learn to manage their time and not procrastinate too much I have several due dates for parts of the project before the whole thing is completed and submitted. These have generally been the following:
Having so many incremental deadlines has really helped keep projects on track and stop students from trying to complete the whole process right before the final deadline.
I always include a comments section at the end of the group survey. I didn't expect many students to write much there. However, I have been really impressed with the self-reflection students have demonstrated there.
This is a multi-agent wayfinding simulator. There are three types of agents that populate the world, the forager ants, the worker ants, and the spiders. The foragers move about randomly until they find food, then they sit and eat until full and head directly back to the colony. The workers move about randomly and when they find food, they eat until full and plan a path back to the colony, while leaving a trail of pheromones in their wake. Workers leaving the colony follow that trail to try and find food more efficiently. The spiders move about randomly until they see a forager or a worker nearby at which point they plan a path towards them. As the colony gets more food, it produces more ants. As the spiders eat more, they have babies. If a lot of ants are on the same spot as a spider, they sacrifice themselves to destroy it in battle.
The comments below are taken from the survey at the end of the project and comments made in course evaluations.