Collaboration takes many forms including pair programming, POGIL, and cooperative learning structures. Each of them are designed to be not just group work, where some students may dominate and others may not participate fully, but to ensure that all students are participating. For example, in pair programming, students are assigned driver and navigator roles. The navigator is not a passive role, but should be actively reviewing the program and providing suggestions so that they can take over programming at any point. In the POGIL groups, each student has a responsibility and role in their group to keep them focused.