In this class, you are permitted to and encouraged to work with a partner for the Midterm Project and Final Project. Below, we provide suggestions for how to work with a partner, but ultimately it is up to you to work productively with your partner.
If you work with a partner, you are both required to actively contribute to all parts of the project.
- One way to do this is through the pair programming model, described below.
- Another way to do this is to work on the same problems at the same time on your separate computers.
In particular, you should not split up the project and each work on separate parts independently.
You and your partner will receive the same score on any submissions you make together. Last quarter in DSC 10, grade data showed that students who worked together on projects got statistically significantly higher project grades than students who worked alone.
Pair programming is a practice in which two programmers share one computer. One programmer is the “driver,” who controls the keyboard and mouse. The other is the “navigator,” who observes, asks questions, suggests solutions, and thinks about slightly longer-term strategies. The two programmers switch roles about every 20 minutes.
What makes pair programming effective is that both programmers are working together on the same problem at the same time. Research shows that the resulting work of pair programming nearly always outshines that of the solitary programmer, with pairs producing better code in less time.
To learn more about the practice of pair programming and to see pairs in action, check out this entertaining video from North Carolina State University: An Introduction to Pair Programming Version 2.
You can choose your own partner. You will need to arrange times to meet outside of class. We expect everyone to be flexible and professional in arranging those times as necessary; if your schedule is highly constrained, explore possible meeting times with your prospective partner before you commit to the partnership.
You should try to pick a partner whose experience and skill level with programming is similar to your own. This may not always be possible and it is sometimes hard to compare skill levels, but students tell us (and other data supports) that pairs are most productive when the partners start at about the same level.
Still, people often pair up with another whose skills are different. This happens more often than not, as no two people have an identical skill set. The differences may be great or small, but this is exactly like most real-world working situations. Part of accomplishing a task is to get the most out of each member and make each member stronger and more productive on subsequent tasks.
Students bring different strengths to the process, regardless of how much experience they have had with programming. Both experienced and inexperienced students will need to draw on their reasoning and problem solving skills. A more experienced partner may sometimes feel frustrated or slowed down by a less experienced partner, but the experienced partner still benefits from the teamwork in many ways. The less experienced partner’s requests for clarification often uncover flaws in an approach or solution; the exercise of providing a clear explanation solidifies and deepens the explainer’s own understanding and the teamwork and communication skills they gain have great value in both the academic realm and the job market.
“My partner had never coded anything before so I was able to teach him a little bit about how it worked. The teaching bit helped me a lot withunderstanding the labs and passing the exams.” – student
The less experienced partner may feel that their questions hold the other partner back or that there is no benefit to participating actively, but pair programming studies show that paired work is consistently better than work the stronger partner does alone. It is each partner’s job to understand the whole task; that means asking questions when necessary and answering them when possible.
If you are unhappy with your partnership (e.g., if your partner does not keep in touch, does not come prepared to work on the assignment, or does not seem to be engaged in the process), please first address your concerns to your partner, and try to agree on what should be done to make the partnership work well for both of you. If that approach is not successful, explain the issues to the instructors, who will work with you and your partner to improve the situation.
If your differences cannot be resolved, or if your partner stops participating, you should mutually agree to separate and complete the rest of the project on your own (or with a new partner). You should never simply abandon your partner without coming to a mutual agreement that this is the best course of action.
To encourage each student to pull their weight and be a good partner, you are free to change partners at any time.