11

Make each group member explicitly be 'responsible' for one aspect of the project. Let's think about why group work is a useful tool in terms of teaching your students. I'd imagine one of the big reasons you would assign a group task is to prepare your students for a job, working with a team to build a product. In the workplace, you typically have a way of ...


4

I avoid using protected characteristics for any kind of group/class allocation. Personally, I apply a similar approach that I use in experimental research: the randomized block design. Typically, I use levels of prior relevant experience, either self-reported by the students at their point of admission or their grade for their pre-requisite class, as the ...


3

An interesting approach, which I have both used, and experienced as a student, is to make it truly random, and obviously so. Use a deck of playing cards split to match class size and how you want the divisions to be. For groups of 2-4, use the the face values with the correct number of suits and numbers removed to make the division equal. If it's a large ...


3

I would suggest that you start each "session" with each one of you going over what was learnt in the previous session. Devote ~15 mins for it. This is not in spite of the fact that you "don't have a ton of interest in each other's topic", but because of it. This "review" of the last session gives, as I see it: You are exposed to some other field. Who ...


2

Break the project up into separate, independent components that must work together and assign each one to a different person or group. This simulates how software is written in the industry. This could be one person doing a different layer of the stack (front end, middle tier, database), or it could be different stacks/services that must operate together (...


2

Before you assign students their first team project some instruction is needed. You can't assume that they will understand teamwork any more than that they will understand recursion without instruction. But first, you should decide on how you want their teams to behave. In this answer, I'll consider only a team structure that requires a team leader who ...


1

I am in some ways a poor person to answer this, because this is something that I've struggled with. There was one recent lab where I was quite successful, though, and I leave it here without any promise of generality: Most recently, when assigning a very hard lab, I pointed out that divide and conquer was a silly approach when the coding assignment is ...


1

Uniformity of groups is not good practice, for a variety of reasons. You need to find some means of assuring variety of experience and viewpoint in any project. If that is hard to do (as it is with such small groups) then don't let those pairs and triples stay together over many assignments, but re-shuffle the groups. It is normally easier with larger groups....


1

I have a very different perspective that the other suggestions made here. Others seem to say that a group assignment shouldn't really be about cooperation and working together, but about dividing it up - externally. I think that the concern is about easing the grading process, but I would rather be a teacher than a grader. In the real world that students ...


1

Aurora's answer is excellent, but I do feel I have one thing to add that's very specific to CS: this is a wonderful opportunity to use (or abuse, depending on your perspective) version control. There are a lot of great reasons to introduce your students to version control, most of which I will not mention because they not directly relevant to the OP's ...


Only top voted, non community-wiki answers of a minimum length are eligible