Pair Programming Spring 2018

Similar documents
Pair Programming. Spring 2015

Pair Programming in Introductory Programming Labs

How to make an A in Physics 101/102. Submitted by students who earned an A in PHYS 101 and PHYS 102.

E C C. American Heart Association. Basic Life Support Instructor Course. Updated Written Exams. February 2016

"Be who you are and say what you feel, because those who mind don't matter and

Consequences of Your Good Behavior Free & Frequent Praise

PART 1. A. Safer Keyboarding Introduction. B. Fifteen Principles of Safer Keyboarding Instruction

PREP S SPEAKER LISTENER TECHNIQUE COACHING MANUAL

with The Grouchy Ladybug

A cognitive perspective on pair programming

Red Flags of Conflict

Biology 1 General Biology, Lecture Sections: 47231, and Fall 2017

The Task. A Guide for Tutors in the Rutgers Writing Centers Written and edited by Michael Goeller and Karen Kalteissen

Nutrition 10 Contemporary Nutrition WINTER 2016

Experience Corps. Mentor Toolkit

CONQUERING THE CONTENT: STRATEGIES, TASKS AND TOOLS TO MOVE YOUR COURSE ONLINE. Robin M. Smith, Ph.D.

PART C: ENERGIZERS & TEAM-BUILDING ACTIVITIES TO SUPPORT YOUTH-ADULT PARTNERSHIPS

Dr. Zhang Fall 12 Public Speaking 1. Required Text: Hamilton, G. (2010). Public speaking for college and careers (9th Ed.). New York: McGraw- Hill.

RESOLVING CONFLICTS IN THE OFFICE

STUDENT MOODLE ORIENTATION

Study Group Handbook

CS Course Missive

The Creation and Significance of Study Resources intheformofvideos

DESIGN, DEVELOPMENT, AND VALIDATION OF LEARNING OBJECTS

Quantitative Research Questionnaire

MENTORING. Tips, Techniques, and Best Practices

Student-Centered Learning

Measures of the Location of the Data

P-4: Differentiate your plans to fit your students

CHANCERY SMS 5.0 STUDENT SCHEDULING

Pair Programming: When and Why it Works

Leader s Guide: Dream Big and Plan for Success

CEE 2050: Introduction to Green Engineering

Star Math Pretest Instructions

What is Teaching? JOHN A. LOTT Professor Emeritus in Pathology College of Medicine

The open source development model has unique characteristics that make it in some

Faculty Schedule Preference Survey Results

CS 1103 Computer Science I Honors. Fall Instructor Muller. Syllabus

PHILOSOPHY & CULTURE Syllabus

WiggleWorks Software Manual PDF0049 (PDF) Houghton Mifflin Harcourt Publishing Company

Getting Started with Deliberate Practice

CLASS EXPECTATIONS Respect yourself, the teacher & others 2. Put forth your best effort at all times Be prepared for class each day

2014 State Residency Conference Frequently Asked Questions FAQ Categories

General Microbiology (BIOL ) Course Syllabus

IMGD Technical Game Development I: Iterative Development Techniques. by Robert W. Lindeman

The Short Essay: Week 6

The Impact of Instructor Initiative on Student Learning: A Tutoring Study

Economics 201 Principles of Microeconomics Fall 2010 MWF 10:00 10:50am 160 Bryan Building

MGMT 479 (Hybrid) Strategic Management

On May 3, 2013 at 9:30 a.m., Miss Dixon and I co-taught a ballet lesson to twenty

FOR TEACHERS ONLY. The University of the State of New York REGENTS HIGH SCHOOL EXAMINATION. ENGLISH LANGUAGE ARTS (Common Core)

Creating Travel Advice

ALL-IN-ONE MEETING GUIDE THE ECONOMICS OF WELL-BEING

Academic Success at Ohio State. Caroline Omolesky Program Officer for Sponsored Programs and Academic Liaison Office of International Affairs

5 Star Writing Persuasive Essay

San Marino Unified School District Homework Policy

STUDENT PERCEPTION SURVEYS ACTIONABLE STUDENT FEEDBACK PROMOTING EXCELLENCE IN TEACHING AND LEARNING

CS 100: Principles of Computing

Fall 2016 ARA 4400/ 7152

CS 101 Computer Science I Fall Instructor Muller. Syllabus

Improving Conceptual Understanding of Physics with Technology

Syllabus Fall 2014 Earth Science 130: Introduction to Oceanography

Using Motivational Interviewing for Coaching

Replace difficult words for Is the language appropriate for the. younger audience. For audience?

Presented by Paula Kordic, College Now Coordinator August 8, 2016 College Now Orientation

EDU 614: Advanced Educational Psychology Online Course Dr. Jim McDonald

RESOLVING CONFLICT. The Leadership Excellence Series WHERE LEADERS ARE MADE

Higher education is becoming a major driver of economic competitiveness

ECE-492 SENIOR ADVANCED DESIGN PROJECT

Pre-AP Geometry Course Syllabus Page 1

English Policy Statement and Syllabus Fall 2017 MW 10:00 12:00 TT 12:15 1:00 F 9:00 11:00

Activities, Exercises, Assignments Copyright 2009 Cem Kaner 1

Sight Word Assessment

THE CONSENSUS PROCESS

Business 712 Managerial Negotiations Fall 2011 Course Outline. Human Resources and Management Area DeGroote School of Business McMaster University

Scott Foresman Addison Wesley. envisionmath

ASTR 102: Introduction to Astronomy: Stars, Galaxies, and Cosmology

New Paths to Learning with Chromebooks

Orange Coast College Spanish 180 T, Th Syllabus. Instructor: Jeff Brown

How to analyze visual narratives: A tutorial in Visual Narrative Grammar

Study Guide for Right of Way Equipment Operator 1

GRADE 2 SUPPLEMENT. Set D4 Measurement: Capacity. Includes. Skills & Concepts. Activity 1: Predict & Fill D4.1

Rubric Assessment of Mathematical Processes in Homework

WHAT ARE VIRTUAL MANIPULATIVES?

Millersville University Degree Works Training User Guide

TASK 2: INSTRUCTION COMMENTARY

Tutoring First-Year Writing Students at UNM

The feasibility, delivery and cost effectiveness of drink driving interventions: A qualitative analysis of professional stakeholders

HUMAN ANATOMY AND PHYSIOLOGY II

PREPARATION STUDY ABROAD PERIOD. Adam Mickiewicz University Report 1. level bachelor s master s PhD. 30 / 06 / 2017 (dd/mm/yyyy)

Learning, Communication, and 21 st Century Skills: Students Speak Up For use with NetDay Speak Up Survey Grades 3-5

Pair Programming: A Contingency Approach

ENG 111 Achievement Requirements Fall Semester 2007 MWF 10:30-11: OLSC

Welcome to the Purdue OWL. Where do I begin? General Strategies. Personalizing Proofreading

Case study Norway case 1

Renaissance Learning 32 Harbour Exchange Square London, E14 9GE +44 (0)

Chapter 5: TEST THE PAPER PROTOTYPE

University of Toronto Physics Practicals. University of Toronto Physics Practicals. University of Toronto Physics Practicals

Facing our Fears: Reading and Writing about Characters in Literary Text

Promoting Active Learning in University Classes

Transcription:

CS18 Integrated Introduction to Computer Science Fisler, Nelson Pair Programming Spring 2018 Contents 1 What is Pair Programming? 1 2 Why Pair Program? 1 3 How to Pair Program 1 3.1 The Formal Description.................................. 1 3.2 The Informal Description................................. 2 3.2.1 Respect each other s time............................. 2 3.2.2 Be a team player.................................. 3 3.2.3 Be open-minded and light-hearted........................ 3 3.2.4 Seek advice when you need it........................... 3 4 Pair-Programming in CS 17/ 18 3 1 What is Pair Programming? Simply put, pair programming is two people working together at a single computer [1]. The practice has been popularized by a software development methodology called Extreme Programming (XP), and a number of researchers have studied the effects of incorporating pair programming into introductory and higher-level computer courses. 2 Why Pair Program? Again, simply put: ˆ You will produce better code [3, 4] ˆ You will learn more, sharing your ideas with your peers and benefiting from their insights [2] ˆ You will become better at articulating your thoughts [3] ˆ You will enjoy your work more and spend less time frustrated [3, 4] ˆ You will be better prepared for more complicated software engineering tasks, both in school and beyond, where collaboration is imperative to success [2]

3 How to Pair Program We first introduce the practice of pair programming, and then follow up with an informal description of the spirit behind it with the hope that a thorough understanding of its goals will help you and a partner work together productively and harmoniously. A successful pair-programmer not only knows and adheres to the formal guidelines, but also is able to resolve intra-partner stress through constructive communication. 3.1 The Formal Description When two programmers work with with one keyboard, a division of labor is necessary. Originally, XP had one programmer type on the left half of the keyboard and the other on the right. However, that practice was abandoned due to the uncomfortable seating arrangements required and a statistically significant increase in repetitive stress injury (RSI). A perhaps more natural division of roles developed in its place: The Driver Responsible for typing, moving the mouse, etc. The Navigator 1 Responsible for reviewing the driver s work. In addition to catching incidental mistakes (that are nonetheless tedious to track down when solo-programming), the navigator considers the code at a more strategic level: how will this fit with the rest of the code? Will this implementation require changes elsewhere? Could we design this program better? Every fifteen minutes or so, the pair switches roles by sliding the keyboard over [4]. That s a pretty loaded sentence, so let s break it down: Every fifteen minutes or so You can wait for a natural breaking point [3], but no one should drive more than 20 minutes or less than 10. the pair switches roles To avoid animosity, ensure the integrity of the team, and keep pair programming fun, it s important that both partners spend an equal amount of time in each role. Some programmers may enjoy driving better, others navigating; however, neither partner does the other a favor by letting him spend more time in a fixed role. by sliding the keyboard Noticeably, not by rearranging the chairs and adjusting the monitor. That is to say, regardless of roles, you are both working together on the problem at hand. As such you are seated next to each other with the monitor adjusted so you can both see the screen easily. All that s required when you switch, then, is to push the keyboard a few inches this way or that. [4] It is important to distinguish pair programming from another distinct cooperative division of labor: divide-and-conquer. In this latter strategy, two people responsible for completing a single task break down the task into smaller pieces, partition the resulting subtasks among themselves, and each works on her part separately. This strategy can be used successfully, but it should not be confused with pair programming. 2

3.2 The Informal Description Here, we outline various practices and perspectives that provide a foundation for your pair programming experience. Knowing that you and your partner have both read this, the two of you will have a common expectation about the pair programming experience and should be able to work together more effectively. These practices and perspectives are inspired principally by a well-written essay that programmers at every level are encouraged to read [4]. 3.2.1 Respect each other s time Show up on time. Plan ahead eat before you arrive. Don t text or check email during your pair programming sessions; stay focused on the joint task at hand. Respect involves communication. If your partner is often late, bring it up. If you receive a call that you must answer, let your partner know and reschedule your meeting, acknowledging that you ve inconvenienced your partner. 3.2.2 Be a team player Take collective ownership of the code you and your partner are writing, abandoning the notion of my part and your part. And, in light of that view, make sure you speak up when you think an error s been introduced, and don t be too proud to admit a mistake. And finally, if you work on any code alone (for example, if a solution comes to you in a dream, or in the shower), review it together line-by-line before incorporating it into your program. Often it s useful for the two of you to rewrite solo code from scratch (you d be surprised how many errors you can catch that way). Again, communication is crucial. Perhaps you re having a hard time adjusting to pair programming, or your partner continues to say my instead of our work. Speak your mind and work through any problems. Offer to cease driving when it s time ( Hey, would you like a go at the keyboard? ), and remind your partner it s time to switch when you re navigator ( Mind if I drive for a while? ). 3.2.3 Be open-minded and light-hearted One of the most important predictors of success in pair programming is buy-in: if you are determined to make the practice fail, it will. Choose a healthy perspective: laugh at your mistakes, apologize if you hurt your partner s feelings, and, more generally, look at pair programming as an opportunity to learn. Also, pair programming can be a pretty demanding activity, so take breaks when you need them. Perhaps a five-minute microbreak is all you need: to check email, get a drink of water, or catch some fresh air suffices. Or maybe you would like to take an hour off to get dinner. 3.2.4 Seek advice when you need it It s important to realize that you and your partner are not alone: if the two of you are having trouble working together, it s important to let an HTA or the professor know so she or he can provide further guidance. The HTAs and professors are familiar with the pair programming philosophy and the difficulties that may arise. They will be able to assist in conflict resolution and/or help you and your partner re-pair if necessary. 3

It is not acceptable in pair programming for a single person to do all (or even most) of the work and then add his partner s name. Academic honesty is always more important than fulfilling a pair programming requirement. If your partner is unwilling to help or fails to show up at scheduled meetings, or if your partner is unwilling or resistant to letting you contribute your share of the work, contact an HTA or the professor. Asking for help is not an inflammatory action, but an important step in conflict resolution. 4 Pair-Programming in CS 17/ 18 Given enough eyeballs, all bugs are shallow. Eric Raymond To summarize the collaboration policy included in the course missive: ˆ On quizzes, you can talk to your neighbors but must write up your own solution. ˆ In labs, you are required to pair program. Follow the methodology outlined in this document. Note that you are also required to program with a different partner each lab. ˆ On homeworks, you may not pair program. However, you are encouraged to talk about ideas with classmates; just don t take away notes from such brainstorming sessions. ˆ For projects, you must work together as a pair. Although you may not be coding, you are expected to follow the methodology outlined above; you may simply be sharing a notebook or a whiteboard instead of a screen. ˆ On exams, no collaboration of any sort is permitted. Therefore, your pair programming experiences will chiefly be in labs and on projects. References [1] Extreme programming: A gentle introduction. http://www.extremeprogramming.org/, August 2007. [2] Jennifer Bevan, Linda Werner, and Charlie McDowell. Guidelines for the use of pair programming in a freshman programming class. In Proceedings of the 15th Conference on Software Engineering Education and Training (CSEET 02), Covington, KY, USA, February 2002. IEEE. [3] Laurie Williams, Eric Wiebe, Kai Yang, Miriam Ferzli, and Carol Miller. In support of pair programming in the introductory computer science course. Computer Science Education, 12(3):192 212, 2002. [4] Laurie A. Williams and Robert R. Kessler. All I really need to know about pair programming I learned in kindergarten. Communications of the ACM, 32(5):108 114, May 2000. 4

Please let us know if you find any mistakes, inconsistencies, or confusing language in this or any other CS18document by filling out the anonymous feedback form: http://cs.brown.edu/ courses/cs018/feedback. 5