Skip to main content

Working in pairs on assignments

Part of the neverending series Things Sam needed to write anyway.

I am not providing an introduction to this piece. The context should be obvious from the letter.

Dear CSC 151 Students,

We have hit the point in the semester in which collaborative assignments are reaching some stress points. Before I address some of those stress points, I’ll start by reminding you of why I assign pair homework.

My goal is not just to teach you computer science. Part of my goal is that you learn broader skills. And learning to work with people who understand material less well than you, or better than you, or just differently than you, is an important skill. It’s not always pleasant, but you are better off developing those skills with people whose intentions you don’t question.

At the same time, I think you better learn computer science when you work in pairs. As you likely noted when we read the paper on pair programming [1] and did the followup discussion, programming in pairs exposes you to different ways of thinking about a problem and makes you more efficient at solving problems (in that one of you is likely to come up with a key idea).

With that in mind, let me report on some of the stress points I’ve heard about and how I would prefer that you address them. Please read all of the points, and not just the ones that you think apply to you.

I feel like I’m going slower than my partner and I am therefore holding him/her/zir/them back. It’s natural to feel less confident than your partner seems to be. But that doesn’t mean that you are holding back your partner. If the two of you approach the problems with good spirit, take a little time to think about each problem on your own, and you both make sure to give the other one an opportunity to talk about a possible approach, you will both gain from the interaction. If your partner has to explain something to you, they will learn as they explain. (Even with my thirty years of experience teaching CS, I often learn something new when I explain an approach to a problem.) I should also note that many people act more confident than they really are (or than they should be). You probably know that gender and race have an effect on confidence. For example, women tend to be less confident in their work than they should be and men tend to be more confident than they should be.

I could be much faster on my own. My partner is holding me back. You may be right. But you will learn more by explaining things to your partner. Remember that you have to be pretty damn smart to get into Grinnell; if your partner seems to be having trouble, they probably still have some useful ideas that you would benefit from hearing and debating. I have watched many students with experience quickly develop solutions that are, nonetheless, not very good solutions.

As I said in class, one of the best pairs I’ve ever seen was A and B. A was the SGA president. B was one of the best CS students I’ve taught; they now have a Technical Achievement Academy Award. The two treated each other with respect. B was a better programmer and better problem solver. But they talked through problems together, A asked good questions, and B tells me that they regularly found that (a) they learned something new through the questions and (b) every four questions or so, A’s question helped B discover that they weren’t as correct as they thought they were.

We decided to split up the work. Now my partner hasn’t done their half. (Alternately: We decided to split up the work; I don’t like what my partner did.) The goal of paired assignments is not that you split the work. Splitting work means that each of you learns about half as much. As I note above, I pair you to help you think about problems in other ways.

My partner is not available to meet. I do ask that you try to pick times to meet during class. I’ll do my best to remember to give you time to plan when I give each assignment. If I forget, please remind me. If you are unable to agree on meeting times during class, find me and I will intervene.

My partner didn’t show up to our meeting and did not contact me. I agree that that’s a problem. But I will tell you that my twenty years of teaching at Grinnell suggest that there are often good reasons that people miss meetings. They have unexpected illnesses. They are supporting a friend in need. They have enough other work that they just forget. I realize that it’s hard, but try to approach such issues with sympathy. If the missed meeting makes it hard for you to complete the assignment on time, let me know. If there was a good reason to miss the meeting, I’ll do my best to accommodate the issue.

I know that some of you approach many of these problems as I’ll just do it myself or I’ll just let my partner do the work. In the short term, that may help you get the work done quickly. In the long term, it means that you will likely gain less from the class. So please take the time and effort to work together.

I realize that working together in randomly assigned groups is very hard and can be frustrating. Hence, after spring break, I will allow you to opt out of randomly assigned partners. I would, of course, prefer that you continue to allow me to randomly assign partners. But I will allow you to choose with whom you work on each post-break assignment, provided you do not work with that partner more than once in the post-break period.

Please let me know if you have any questions.


– SamR

[1] Wray, Stuart. 2010. How pair programming really works. IEEE Computer, Jan/Feb 2010, pp. 50–55. Available online at

Version 1.0 released on 2018-02-23.

Version 1.0.2 of 2018-02-26.