We require Pair Programming on homework assignments (not quizzes), since it's an extremely effective way to learn and lots of fun! Remember that showing complete solutions to others who are just starting the homework prevents learning and is against the edX honor code.
To take part in a pair programming session, first join the Agile Ventures Pairing Community and then browse the pairing events, noting any that are at an appropriate time for you, and on a topic you want to pair on.
If you can't see any at a good time for then create one at a time that does suit you by creating a new pairing event following the steps below. Note: that there is a fundamental difference between a "Hangout" and a "Hangout on Air" - only the latter can be broadcast and recorded, and creating a hangout through other means than specified below will lead to a non-recordable hangout. All pairing (or solo) sessions should be recorded and set as unlisted, for upload as evidence of working on the assignments.
1. Go to http://www.agileventures.org/events/new?project=cs169 and fill in an appropriate title, e.g. "Pairing on CS169 HW0 Ruby Intro":
2. Leave the Category and Project settings as the default "Pair Programming" and "CS169"
3. Fill in a description such as "Hoping to work from the beginning" or "I've finished parts 1 and 2 and want to focus on part 3".
4. Set the start time and date by entering your preferred pairing time (in your local time, use world time buddy to check time in your friend's timezones) and date in the relevant fields.
5. Click the 'Save' button and your event will appear in the Agile Ventures pairing events
6. Just before your event starts you will need to navigate to the event page itself, and click on the orange "Start a Hangout on Air" button NOTE THAT IN PRINCIPLE ANYONE CAN START THE EVENT - START IT EARLY IF YOU WANT TO ENSURE TO BE THE EVENT HOST:
This will pop up a new browser window, and the first dialog will ask you to invite guests:
7. Skip this dialog (press the 'Skip' button) NOTE THAT CAMERA AND MICROPHONE ARE ENTIRELY OPTIONAL - IT IS THE SCREENSHARE FUNCTIONALITY OF HANGOUTS THAT IS MOST IMPORTANT FOR PAIR PROGRAMMING
8. If others are having trouble joining your hangout then feel free to copy and paste the URL from the address bar of the hangout into our gitter chat in order to allow anyone in the our community to join you for the pairing session:
9. Once you are ready you can click the green "Start Broadcast" button at the bottom of the hangout to record your pairing session (see image below). Note that this requires you have linked a YouTube account to your G+ account. The video will show up in your Youtube videos a few hours after you've ended the broadcast. You can then share this recording as necessary.
and you can screen share via the green screen share button that shows up when you move your mouse to the left of the hangout:
Screenshare by itself is reasonably effective for study groups, although for real pair programming you will need to employ some method for sharing the exact code when you swap drive/navigator roles. Git Pong is a good option but requires good Git skills. Another good option is Cloud9, and also Nitrous.
There are many ways to pair program online but Google Hangouts is a good option to get started as long as you have a reasonably fast computer and a reasonably stable internet connection. Even if you'd like to use a different remote pairing technology it's still worth creating or joining an event in the Agile Ventures Community since you can always switch to (or use in combination with) Skype Screen Share, Screen, Tmate, Floobits, MadEye, ScreenHero or other alternative once you've established the time and date that you can pair at.
We strongly recommend using the latest version of Chrome for hangouts.
Frequently Asked Questions:
- Do I need to find a pair partner in the same location or timezone as myself?
The location of your pair partner is not at all important - as long as two students are online at the same time that is all that is required.
- Must I pair with the same person throughout the course?
You are not required to pair with the same person each time - in fact you are encouraged to find someone new each time.
- How should I find a pair partner?
Go to the AgileVentures events page and create an event scheduled for a few days in the future at your preferred time - that will remain on the list until it begins - also look at the event list yourself to see if someone else has already posted an event for some time that is good for you and simply plan to join them when it begins - a link into the hangout will be posted on the event page and also in the Gitter chat when the event begins
- Can I observe other sessions?
Everyone is welcome to join and observe any session - even if you only watch - also there is generally nothing wrong with having multiple navigators - as long as there are at least two people who are swapping in and out of the driver role - but please ensure that you driving in the session that you submit as your assignment
- What if my pair-programming video records poorly?
If the video records poorly that is not a problem - these assignments should take several hours per week to complete - we do not expect that any single pairing session will last more than an hour or two (although if both partners are happy you can go on for several hours) - but it's likely that you will make several videos in order to complete each assignment, and as you learn the ropes the the quality will improve with practice, particularly if you watch them afterward and reflect on any flaws in your video.
- We were speaking in a language other than English and the reviewer didn't give us such a good grade for communication and/or missed our role switching. Isn't that unfair?
The course is English, and while we want to support other language versions of the course (as with the textbook) we have to consider English as the default language for the course.
Using other languages in pairing sessions shouldn't be a problem in principle as long as it's clear that there is more than one person speaking, i.e. it's not all one person telling the other what to do, and that you highlight in English when you are changing roles. However do consider that speaking languages other than English in your pairing sessions will sometimes impede your reviewer, and lead to lower grades for rotation and communication.
Hopefully in future we will add more direct support for pairing and reviewing in other languages.
- Use the cloud9 chat instead of the google chat so that it is visible in the recording
- Increase the cloud9 font size so your pair partners and peer reviewers can see your code
- Have the initiator of the hangout lock onto the driver's screen so that gets recorded
- Have the initiator of the hangout lock onto the new driver's screen when roles change
- Swap driver navigator roles as often as possible, ideally at least once every 15 minutes - note that in a real-world situation you might be changes roles much more frequently, or much less frequently depending on the circumstances. This recommendation is to ensure that you are spending approximately equal time in both roles in your pairing session and that you are effectively taking turns, which is a critical part of the pair programming skill. At this stage changing roles at least every 15 minutes is good for your learning and ensuring you are both focused on the same task.