Pair Programming Assignments for Projects 1-5¶
| Project | Pair 1 | Pair 2 | Triple |
|---|---|---|---|
| Project 2 | Kaisia + Paige | Hy + Aisling | Caden + Katie + Nodoka |
| Project 3 | Caden + Kaisia | Hy + Nodoka | Paige + Aisling + Kaitlyn |
| Project 4 | Katie + Aisling | Kaisia + Nodoka | Caden + Paige + Hy |
| Project 5 | Hy + Katie | Caden + Paige | Aisling + Nodoka + Kaisia |
Note: No official pair programming assignments for the Final Project - you’re welcome to collaborate informally with classmates, but there are no assigned partners. Everyone still submits their own independent work.
If someone is absent: The remaining partner should join the other pair group, creating two groups of 3 instead of two pairs and a triple.
Please stick to the assigned schedule unless there’s a serious conflict - contact me if issues arise.
Important Guidelines¶
What are Pair Programming Partners (for this class)?¶
Your pair programming partners are assigned collaborators who work together throughout each project - during Friday labs and throughout the week. You’ll brainstorm ideas, discuss approaches, help each other debug, and share discoveries as you progress. Everyone has different strengths and perspectives to contribute. The partnership extends beyond lab time - continue collaborating throughout the week. Create a private Slack channel with your partners for each project to stay connected.
Note: This is NOT traditional pair programming where you share one computer. In this class, pair programming means:
Each person works on their own computer - You’re not sharing screens or taking turns
Brainstorm and plan together - Use the whiteboards to sketch algorithms and trace through logic
Collaborate throughout the project - Share discoveries, discuss progress, celebrate breakthroughs
Debug together - When someone gets stuck, partners help troubleshoot
Experiment with different approaches - When you have multiple ideas, try them and compare
Implement independently - Even if using the same approach, write your own code
Understand everything you write - Be able to explain WHY your solution works
The goal: Create an ongoing collaborative learning relationship. Whether you converge on one approach or explore multiple solutions, everyone should deeply understand what they’re implementing and why it works.
Important: This document provides suggestions and examples for effective collaboration, not rigid requirements. Feel free to adapt these practices or develop your own collaborative style if it works better for you and your partners.
Critical Reminders¶
⚠️ Everyone completes and submits their own individual work!
Collaborate on ideas and approaches, but implement independently
If you arrive at one great approach together, both must understand WHY it works
Never copy code - even if using the same approach, write it yourself
Why this approach? Sometimes you’ll discover multiple solutions worth comparing. Other times you’ll converge on one solid approach. Both are valuable! The key is understanding the “why” behind your implementation.
Growth & Assessment:
Document different approaches tried in your growth memos
Your growth memos should include at least one insight gained from your partners
Reference insights from partners (with attribution)
Be prepared to explain trade-offs between approaches
Your solutions journal can become part of your final portfolio
How It Works¶
Find your pair programming partner(s) at the start of Friday’s lab
Grab a whiteboard and start brainstorming together - sketch algorithms, write pseudocode, draw data structures
Challenge each other’s assumptions and explore multiple approaches
Use the whiteboard to trace through your logic step-by-step
Sit together with your laptops and start implementing
Work on your own individual implementations (possibly different approaches!)
Help each other when someone gets stuck - return to the whiteboard if needed
Compare results - what worked? what didn’t? why?
End with reflection and planning - share insights and discuss next steps for the week
Continue collaborating throughout the week - share discoveries, discuss new ideas, compare progress
Submit your own work by the project deadline
Collaboration Skills - How to Be a Great Partner¶
How to Give Constructive Feedback¶
❌ “Your code is wrong” → ✅ “I think there might be an issue with the loop condition”
❌ “That won’t work” → ✅ “What happens if we get a negative input?”
❌ “This is obvious” → ✅ “Here’s how I think about it...”
How to Ask Good Questions¶
“Can you walk me through your logic here?”
“What made you choose this data structure?”
“How does this handle the edge case where...?”
“I’m confused about line 23 - what’s happening there?”
How to Explain Without Taking Over¶
Start with the big picture, then zoom in
Ask “Would you like me to explain my approach?” before launching in
Check understanding: “Does that make sense so far?”
Encourage them to implement it themselves
Need Thinking Time?¶
It’s perfectly okay to say: “Let me think through this alone for 5 minutes, then let’s compare ideas.” Introverts and those who process internally - take the quiet time you need!
Addressing Skill Differences¶
Skill mismatches are intentional! Teaching solidifies understanding for advanced students, while those who are struggling bring fresh perspectives and valuable questions.
If you’re ahead:
Teaching deepens YOUR understanding - can you explain it three different ways?
Your partner’s questions reveal gaps in your own knowledge
Challenge yourself: Can you explain without jargon?
If you’re struggling:
This is normal! Everyone struggles when learning to program
Remember: “If you’re comfortable, you’re not learning!” The discomfort is growth happening
Embrace the growth mindset: You’re not bad at programming, you’re just not good at it yet
Your questions help your partner see gaps in their understanding
“Beginner’s mind” often spots issues experts miss
Every expert was once exactly where you are
Lab Session Best Practices¶
Working with Your Partners (Pairs or Triples)¶
Start at the whiteboard: Draw out the problem, sketch algorithms, write pseudocode
Trace through examples: Walk through test cases together
Challenge each other: Question assumptions, suggest alternatives
Work at your own pace: You don’t need to stay synchronized - help each other as needed
Explore ideas together: You might find one great approach or several worth trying
If you disagree on approach: That’s great! Try both and compare results to learn more
If in a triple: Use different colored markers for different approaches
Then implement: Sit with your laptops, each writing your own code
If using the same approach: Make sure everyone understands WHY it works
If trying different approaches: Compare results to learn from the differences
Rotate helping: When someone’s stuck, others jump in
Debug on the whiteboard: When stuck, diagram what’s happening
Share discoveries: “Hey, I found a cool way to do this!”
No one dominates: Everyone gets whiteboard time, rotate who presents first
Document what you learn: Take photos of useful whiteboard diagrams!
Celebrate victories: Both small wins and breakthroughs!
Remember: These are suggested practices that work well for many students, but feel free to adapt them to what works best for your partnership.
Keep a Solutions Journal (Optional)¶
Document different approaches you see throughout the semester - from partners and your own experiments. This becomes YOUR personal reference and can be part of your final portfolio.
End-of-Lab Reflection¶
Take the last 5-10 minutes of lab time to:
Share with your partner(s) what approach surprised you
Discuss what you’ll each explore further
Plan your next steps for the week - when will you check in? What will you work on?
Share one concept that became clearer through collaboration
Pair Programming Guidelines (Our Version)¶
✓ Do: Start at the whiteboard - sketch algorithms and pseudocode together
✓ Do: Ask before explaining - “Would you like to hear my approach?”
✓ Do: Challenge constructively - “What about edge cases?” “Will this scale?”
✓ Do: If you agree on one approach, both must understand WHY it works
✓ Do: If you have different ideas, try both and compare results
✓ Do: Share discoveries throughout the week - “I found a cool optimization!”
✓ Do: Meet up between labs to work alongside each other
✓ Do: Document insights in your solutions journal
✓ Do: Take photos of helpful whiteboard work
✗ Don’t: Copy code from each other, even if using the same approach
✗ Don’t: Dominate the conversation or stay completely silent
✗ Don’t: Rush someone who needs thinking time
✗ Don’t: Implement something you don’t understand
✗ Don’t: Wait until you’re desperate to reach out - collaborate continuously!
Note: These are guidelines based on what works well for many students, not strict rules. Find the collaborative style that works best for your partnership!
Contact¶
If you have any issues with your pair programming partnership, please let me know ASAP so we can address it.
After Project 1, I’ll collect feedback to see what’s working and what could improve.
Remember: The goal is to learn from each other and build a supportive classroom community where no one has to debug alone!