What is the best way to collaborate?

The exact work style you use with your partner is up to you. There are several ways that pairs can work together. Here are some possible strategies, along with our opinion about the effectiveness of each.

Experiment with each of these styles on your own to determine what works and which situations are most effective for each style.

Write the code together

Strongly recommended, especially for solving more complex problems with many small details and interactions between different parts of a program.

In this work style, you would sit next to each other at the same computer and collaborate to write the code. One person would type for a while, then the other, and back again. You can decide the interval for switching who controls the computer (the “driver”). Some people recommend switching roughly every 15-20 minutes, to make sure that each person gets to drive. Even if one of you is a faster typer, letting both people drive for equal time is good to avoid having one person dominate the work.

Work together using online tools

Recommended, but only if you can’t meet in person.

In this work style, the two of you would be physically apart but would collaborate by sharing code and video chatting using online tools.

Do the assignment individually, and then compare solutions

Somewhat recommended, but we suggest one of the others above instead.

In this work style, each of you would complete the assignment on your own, then the two of you would have a meeting and compare solutions. You would then merge the solution into a best combined solution that you would submit together. This work style doesn’t have as many benefits as working on the solution together, but it is still good to see how another student solved the problem and learn from each others’ programs’ strengths and weaknesses.

There are some work styles that we do NOT recommend because we do not think they follow the spirit of working in pairs, and do not allow both students to effectively learn the material. For example:

Splitting up the parts of the assignment
In this work style, each of you would complete parts of the assignment individually, then submit them together. For example, if the assignment has a “Part A” and a “Part B”, one of you would do Part A and the other would do Part B. We do not recommend doing this because each of you will only learn part of the material for that assignment. This will leave you less prepared on exams and future assignments.
Taking turns on assignments
In this work style, in a pair of students named A and B, student A would do Homework X, then B would do Homework X+1, A would do Homework X+2, and so on. You should not do this, since each partner is expected to make a significant contribution toward solving the assignment. You should not claim to be part of a pair submission if you did not contribute significantly to help solve that problem. Moreover, your section leaders may ask you to explain aspects of the submission during lab check-offs. By doing this each of you will only learn half of the course material in detail. The assignments are by far the best vehicle for you to learn how to program effectively and truly come to understand the course material. Only completing half of them will leave you much less prepared to do well on exams and future assignments.
One person does all of the work
You should not do this, since each partner is expected to make a significant contribution toward solving the assignment. You should not claim to be part of a pair submission if you did not contribute significantly to help solve that problem. Moreover, your section leader may ask you to explain aspects of the submission during lab check-offs. By doing this the other person will not learn the material well and will be grossly underprepared to do well on exams and future assignments. The assignments are by far the best vehicle for you to learn how to program effectively and truly come to understand the course material.

Logistics

Are there any constraints about whom I can work with?

No, but we strongly suggest working with another student in your section who is taking the course for the same grading basis (e.g. letter grade, P/NP).

How can I find a partner?

Your section leader may provide time in section for you to find a partner if needed. You may also ask the lab staff if you need help finding someone else in your section to partner with.

How do we submit/get grades as a pair?

Only ONE of you should needs to submit the assignment to Gradescope. Once the assignment has been submitted, you must then add your partner by inviting them to your assignment group.

My partner was a bad partner…

They didn’t do any work, or didn’t do their share of the work, or didn’t communicate or meet with me, etc. What can I do?

Have you tried speaking to your partner to let them know that you expect them to do more? Remind your partner of the expectations of each member of a pair. Many group issues can be resolved by better communication and setting expectations.

If talking to your partner does not resolve the situation, speak to your section leader and explain the details of what has happened. We will try to help you resolve the issue. If it is an ongoing problem, your section leader can help you find you a partner, or you can dissolve your partnership and submit individually. We will provide a way for you to give feedback about your partner in case there is any complaint you would like to bring to our attention.

NOTE: If you agree verbally (or via email) to work with a given partner on a given assignment, you are expected to work through that assignment with that partner to completion. You can’t abandon your partner in the middle of an assignment unless the decision to unpair is mutual for both of you. Please be considerate for your partner and don’t leave them hanging without an easy way to find a new partner in mid-assignment. If you are planning to end your partnership and do the next assignment alone, please tell your partner this as soon as possible when the assignment is given out, so that they can make other arrangements.

Not because they didn’t do enough work; they did too much! They hogged the keyboard, or they did the whole assignment without waiting for me, or they didn’t communicate with me, etc. I feel that I didn’t get a real chance to help in writing the code and solving the assignment. What can I do?

The answer is similar to the previous question. Have you tried speaking to your partner to let them know that you expect them to let you contribute? Remind your partner of the expectations of each member of a pair. Many group issues can be resolved by better communication and setting expectations.

If talking to your partner does not resolve the situation, speak to your section leader and explain the details of what has happened. We will try to help you resolve the issue. If it is an ongoing problem, your section leader can help you find you a partner, or you can dissolve your partnership and submit individually. We will provide a way for you to give feedback about your partner in case there is any complaint you would like to bring to our attention.

Acknowledgements

Much of this material is adapted from CS 106A at Stanford.