Partnership Guide
Author: Josh Hug, Itai Smith

Why Partnerships?

Online teaching is weird. To encourage more community and human connection in this Coronavirus universe, we’re encouraging students to work with a partner. You will have the option to work on lab assignments with a partner, and will be required to complete Project 3 with a partner.

Partnership Structure

Every partnership you establish must officially be registered on Beacon (see below). Here is an outline of how partnerships work:

How Can I Find a Partner?

In the first week of class, if you choose to attend a lab section, we encourage you to reach out to other students in your lab section to find a partner. We will also post on our course forum, Ed, resources for finding partners and study groups in the class.

For Project 3, all students will be required to work with a partner. It is extremely unlikely that we will allow any student to work alone. Before the release of Project 3, we will release a form in which you will indicate if you have a partner for Project 3. If you don’t, the form will ask you to describe your work habits preferences, and we will match you up with another student in the class before the project is officially released. You don’t have to work with your lab partner on Project 3 if you had one. In this case, you can either choose a new partner or request to be matched with another student, using the aforementioned form.

Please reach out to us if you have any questions about finding a partner!

How Do I Officially Register a Partnership?

Navigate to the partnerships page on Beacon. Then, click on the “Invite a partner” button and invite your desired partner by entering their classid (sp21-s***) in the form. This will generate a link which you can send your partner so that they can complete the partnership registration. Only one partner needs to complete this step.

Once your partner has accepted, you both should see each other as partners on Beacon under the “Partnerships” tab. This will grant you both access to a new partner Github repository that you can use to collaborate on (more info on that below).

How Do We Submit/Get Grades as a Pair?

Having a partner for an assignment means that you and your partner can submit the exact same code (or very similar) for that assignment. In any other circumstance, submitting the same code (or similar) to another student will be considered plagiarism.

For labs, BOTH partners need to make individual submissions to the assignment on Gradescope from your shared partner repository, this will ensure that your submissions are not marked by our plagiarism detectors. For Project 3 only, you will add your partner as a group member to your submission on Gradescope, instead of making individual submissions. Any code for a partner assignment (labs and Project 3) that exists in a shared partners’ repository is acceptable for submission by both partners.

Can I Dissolve/Change my Partnership?

Dissolving a partnership means stop working on a partner assignment (labs or Project 3) on a shared repository that was previously established, and instead continue working solo on your personal repository (sp21-s***).

You cannot delete a partnership that you have already registered on Beacon. If you would like to form a new partnership, you can simply go through the same process to create another partnership through the Partnerships tab on Beacon. You can create a maximum of 3 new partnerships for labs.

Lab partnerships are optional. You don’t have to keep working with your partner if the partnership is not working for you. You can also get a new partner at any time. Simply follow the steps above to register a new partnership on Beacon, and start working on labs using the new partners’ repository. You are allowed to use any code that you ever had access to on a partners’ repository, even if you decided to discontinue that partnership.

Project 3 partnerships are required. If after beginning working with a partner you find yourself unable to carry on with the partnership, email your Mentor TA explaining your situation. If you are approved to dissolve the partnership, both partners will continue working on their personal repositories, and will be able to use the code that already exists in the shared repository prior to the partnership’s dissolution.

May We Work in a Group of Three?

No.

Rules for Collaboration

Using Git

As mentioned above, you and your partner(s) will have access to a git repository in which you should store your collaborative work for each lab and/or Project 3. You should use this repo (not your personal sp21-s*** repos) to work on partner assignments (Project 3 and optionally labs). Please refer to our git guide for git-related questions.

Just like in your personal repos, you will have to add the skeleton repo as a remote to your cloned copy of the partner repo. This is so you can pull the starter code for each partner assignment before you start working:

git remote add skeleton https://github.com/Berkeley-CS61B/skeleton-sp21.git

Since you and your partner will be pulling and pushing from the repository, you may occasionally run into trouble with Git. The most common issue will be a merge conflict.

A merge conflict happens when git doesn’t know how to resolve multiple changes to the same file. This can happen when both you and your partner work on the same part of an assignment at the same time, one of you pushes their work, and the other pulls their work - whichever part of the file that you both worked on will be in “conflict”. See here for more.

Important Note: Don’t use -f, –force or –hard

We know it is scary to see errors when running git commands, but don’t worry - almost any git issue is easy to fix with the right commands. Some Google results may lead you to solutions that involve “-f”, “–force”, or “–hard”. Don’t use such commands without talking to a TA first, as these can cause seriously annoying problems with your repository.

Remember, when in doubt, please ask a TA for help with any git issues that you cannot resolve yourself.

What is the best way to collaborate?

The exact work style you use with your partner is up to you. There are two recommended strategies for pairs to work together.

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 time 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.

Do the assignment individually, and then compare solutions

This approach is less recommended, but allowed.

In this work style, each of you would complete the lab 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 the strengths and weaknesses of each others' code.

You are not allowed to split up work, i.e. it is not OK for one partner to do Part A of a lab and another to do Part B. It also not OK to let your partner do an entire lab for you.

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 mentor TA and explain the details of what has happened. We will help you resolve the issue.

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 TA and explain the details of what has happened. We will help you resolve the issue.