Lab Partnerships
Author: Josh Hug, Connor Lafferty

If you attend the live labs in 61B, you will have the option to work with a partner.

Why Partnerships on Lab?

Online teaching is weird. To encourage more community and human connection in this Coronavirus universe, we’re encouraging lab partners for students who attend live lab sections.

Partnership Structure

Starting with lab3, if you attend a live lab, you can work with a partner. You must officially register your partnership for labs on Beacon (see below). Here is an outline/FAQ of how lab partnerships will work:

How can I find a partner?

In the first week of class, we encourage you to reach out to other students in your lab section to find a partner. Lab TAs will also be avaliable to help you find partners within your lab if you don’t have one in mind. We will also make a Discord channel for people looking for lab partners to post and find other students who they would want to work with, also you can post something on this Ed thread. If you don’t have a partner in mind by the middle of week 2, we will release a form for students to fill out where they can input some of their preferences. We will use those responses to match the remaining students by the start of week 3. If you don’t have a partnership registered by the beginning of week 3, you may be assigned a random lab partner. Please reach out to us if you have any questions!

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 in the form. This will generate a link which you can send your partner so that they can complete the partnership registration.

Once your partner has accepted, you both should see each other as partners on Beacon. This will grant you both access to a new partner git repository that you can use to collaborate on labs (more info on that below).

How do we submit/get grades as a pair?

BOTH of you need to make individual submissions to the assignment on Gradescope from your shared partner repository. It is not enough for one of you to add the other as a partner on one Gradescope submission.

For how long am I committed to working with my partner?

For every lab until the end of class.

Can I dissolve my partnership?

Barring extreme circumstances, no you cannot. Hopefully, even if there is some dissatisfaction with your partner, the two of you can still complete the work and learn. If you are having trouble working with your partner, please talk to your mentor TA as soon as possible; we want to make things right in the best way possible.

May I work alone?

Yes you may, though we encourage you to look for partners in your lab. We’ve found that students that work with a partner have the best experience in CS 61B.

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. You should use this repo (not your personal fa20-sXXX repos) to work on 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 lab before you start working. Please refer the git section of lab1 if you need the command for this.

Since you will 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 mutliple changes to the same file. This can happen when both you and your partner work on the same part of the lab at the same time, then 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 (add link) 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 fix with the right commands. Warning that Google posts 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.