Have you tried pair programming yet in your classroom? I started using it in my classroom five years ago and will never go back to the one computer per student model.
In my classroom, students are randomly paired for a lab. I use the term “randomly” loosely, as I must admit to some tweaking, especially at the beginning of the course, to ensure partnerships that will be beneficial to moving both members forward. I try to make sure each student has an opportunity to work with every other student at some point during the year. One student is the “driver” and has control of the keyboard and mouse. The other student is the “assistant” and sits to the side, but works with the driver, advising and catching errors. Every 15 minutes, an alarm sounds (a cow moos in my classroom), and the students switch positions. Partners receive the same grade on the lab. Part of their grade includes how well they work together as a team: sharing the workload, staying on task, working cooperatively (outlined in a rubric so they know this ahead of time).
The benefits of pair programming are numerous. First, the practice teaches students to work cooperatively. Students learn from each other, picking up new skills and techniques. I have also found that pair programming results in students giving a problem a concerted effort before turning to the one or two programming gurus in the class for the answer. The empty screen facing the student is somehow less frightening with another person by his/her side. I have seen a much higher success rate in a team’s ability to figure a solution on their own without having to seek out others. Confidence levels rise as students find that, working cooperatively, they can arrive at a solution. In particular, females who are intimidated by computer science are able gain confidence by successfully working through labs with their partner. They begin to see themselves as valid contributors to the partnership, and start to take initiative in the problem-solving process.
There are drawbacks. Advanced students sometimes overwhelm students whose skills are at a lower level. The more adept students sometimes resent having to work at a slower speed, but upon reflection, can see the benefit of explaining their thinking to their peers. Sometimes advanced or motivated students go home between classes and complete the entire lab on their own. I have thwarted that by giving “dessert” problems for those students to work on, telling them they must save the regular problems for class time.
Occasionally, later in the year, I will have the students work alone on a lab, to see if they are able to arrive at a solution on their own and to give those who prefer to work alone that opportunity. The majority of students states in post-lab reflections that they found working alone a challenge and they see the benefits of working with a partner. Most tell me they prefer to work with another student on future labs. There are a few who enjoy the solo experience more, but I am never surprised at who those students are. They are usually students who don’t like to work in groups, no matter what the subject.
Overall, however, the benefits of overall higher confidence levels and more concerted efforts to develop a solution before turning for help vastly outweigh the occasional inequities within groups. On a selfish note, it also means half the number of labs to grade! If you haven’t tried pair programming in your class, you might try it on just one lab or assignment to see how it goes.
Karen Lang
CSTA Board of Directors