Computer science (CS) projects afford an ideal opportunity for collaboration. Whether or not your students are working on a computer, they are grappling with new skills and content and can better process and apply that new information by talking it over with someone. A CS class does not have to look like row upon row of silent students working on computers. A good CS classroom sounds like any good classroom—plenty of student conversation, collegial debate, exasperation at difficulty, and celebration of success.
We all know that planning for group projects is important, but the good news is that using computers can often help facilitate those projects running smoothly. Next, we provide you with best practices that work across all grades on the following topics:
- Structuring groups for success.
- Tracking students’ progress.
- Encouraging meaningful collaboration.
Structuring Groups for Success
- Set up groups so that each group has 3–5 students.
- Balance each group with students who work well independently and students who need extra support.
- Ensure heterogeneity. Having students learn to help and support each other is valuable.
- 3–5 students/group is ideal.
- Create and assign roles (four suggestions follow):
- Project Manager: In charge of daily progress, timekeeping, and feedback for the group, which the teacher can use for grading.
- Coder: Writes functional code every day.
- Debugger/Editor: Checks everyone’s work and comments.
- Designer: Deals with sprites, backgrounds, and images.
- Roles can be filled by multiple students (For example, there can be two designers).
- Students can change roles from day to day, but every student must have a job every day.
- Part of the learning in the project is experiencing the diversity of roles one can fill with the concepts and practices of CS.
Tracking Students’ Progress
- Create a team rubric and/or log for student groups, and share it with students.
- Have students keep track of their work every day. This responsibility provides a powerful way to build independence and mimics industry behavior.
- We’ve used students’ ratings of each other as the basis of grades to great effect. It keeps everyone in the group engaged with the work and helps students honestly assess their own contributions.
- Create a clear task sheet (An example follows).
- What are the deliverables?
- What should different groups’ members be working on at the same time?
- What do students need you for? What can they (reasonably) do on their own?
Encouraging Meaningful Collaboration
Even when students are put into groups and given a way to monitor their own progress, meaningful collaboration is something we work on actively fostering during group projects.
Groups Sit Together
The computer offers novel ways to collaborate (for example, I’m writing this right now in an office in Manhattan, and you’re reading it…wherever you are), but the kind of collaboration we want for our students should be enhanced by a computer, not replaced by one. Just because students can use the computer to chat across the room doesn’t mean we shouldn’t encourage elbow partners and think-alouds.
Projects That Are Just Complex Enough
A challenge we’ve seen in CS classrooms across New York City is students not wanting to work together because they feel it slows down their progress. One straightforward way of solving this issue is by giving students projects that are just complex enough that collaboration is necessary. This could be achieved with the following:
- Project rubrics that include criteria that map to all project roles—project manager, coder, debugger, designer—so that one student cannot do it all.
- Complex project-driving questions that require students to research, discuss, and prioritize. For example, you may make the project-driving question “How might you create a drawing application?” more complex by adding a constraint: “How might you create a drawing application that can be used by the visually impaired?”
Collaboration as a Technical Concept
Collaborating on a programming project is technical. If students are working together or rotating to write code in one file, they need to structure their code so it is readable by others in their group. This includes things like naming variables and functions descriptively (‘variableName’ instead of ‘n’) and commenting their code.
- Sample “Code for the Bronx” Project (6th Grade @ MS223)
- Team Project Rubric & Log
- Team Project Reflection
- Everything you know about well-planned, intentional group work applies here, too.
- Group projects are an opportunity for students to discover a talent adjacent to the normal roles they take in the classroom and assume roles of leadership, creativity, and design.
- Giving students a way to track their progress is good for them and for you.
- Meaningful collaboration doesn’t come naturally with group projects. Get students to sit together, give them complex problems that lead to authentic collaboration, and make sure they engage with the technical aspects of collaboration.
- Use the next example as a template or a guide to help you plan a group project for your students.