Pair Programming is one of the principles of Extreme Programming. According to www.extremeprogramming.org, pair programming means:
All code to be included in a production release is created by two people working together at a single computer. Pair programming increases software quality without impacting time to deliver. It is counter intuitive, but 2 people working at a single computer will add as much functionality as two working separately except that it will be much higher in quality.
The literature on pair programming talks about the "front seat driver" who sits at the keyboard, and the "back seat driver" who criticizes and strategizes.
We will categorize the roles of the members of the pair as the Coder and the Explainer.
The Coder is like the Front Seat Driver. He or she sits at the keyboard and types in the code based on a pre-discussed design.
The Explainer is like the Back Seat Driver. He or she sits next to or behind the Coder, and thinks about what needs to happen next, or how things fit together. But we don't want anyone falling asleep in the back seat. So the Explainer is also responsible for maintaining the Session Reports and the Summary Report, which will be part of the final package to be turned in.
The Coder should be reviewing and editing explanations, just like the Explainer does for the code. The front seat coder is the back seat explainer.[*]
I expect that each pair will switch roles throughout the course. You may keep the same role throughout a problem set or a question on a problem set, or you may switch roles even within a question. The point is to make sure that both of you are fully engaged on every question in every machine problem.