• Collaboration: Programs can be done in pairs but you must follow the rules below.
  • Questions: are to be posted on Piazza, a free tool that we're using to manage questions. Before posting a question, please search the assignment pages for an answer and also search Piazza to ensure your question hasn't already been asked.
  • Late Programs: are not accepted for a grade without prior approval from your instructor. Contact your instructor at least three (3) days in advance of the due date if exceptional circumstances beyond your control that will prevent you from completing an assignment by the deadline. We will ask you to submit the work you've completed, which we'll review and then might give you a short extension to the due date.
  • Grading: Details will be updated soon

Rules of Pair Programming

  • You may have only one partner for each programming assignment.
  • You may have a different partner on different programming assignments.
  • You may not pair program with multiple partners on the same assignment.
  • Your partner must be currently enrolled in a CS 367 lecture.
  • You must list your partner as a collaborator in the header comments of your source files (see Commenting Guide).
  • You must follow the principles of pair programming summarized below.

Submitting someone else's work as your own is academic misconduct, which will be dealt with in accordance with University Academic Misconduct procedures.

Principles of Pair Programming

The following is a summary of successful pair programming principles taken from a paper by Williams and Kessler:

  • Pair programming involves two people working together at one computer, continuously collaborating on design, coding, and testing. One person types; the other either provides directions ("Now we need to write a new method that does ..., Now we need a loop to do ...") or constantly reviews what the typer is doing, and provides comments.
  • Pair programming has proved successful both in classes and in industry. Programmers usually report having more confidence in their solutions and enjoying programming more when working in pairs.
  • It is important to switch roles often (slide the keyboard back and forth). Because pair programming can be quite intense, it is also a good idea to take breaks (to check e-mail, go for a walk, have a snack).
  • It is important to provide honest but friendly feedback. To be effective, there needs to be some healthy disagreement and debate, but pairs also need to be respectful of each other, and try to avoid becoming defensive when receiving criticism.
  • Inevitably, programmers do some independent thinking/working. For best results, that work should be reviewed by both partners (and perhaps revised) when they start working together again.
  • To be successful, pair programmers must realize that the benefits of working together outweigh their usual preference for working alone, they must confidently share their work, accepting instruction and suggestions for improvement in order to improve their own skills and the code they are writing, and they must accept ownership of their partner's work and thus be willing to constructively express criticism and suggest improvements.


  • Step 1, Submission: Submit your work before the assignment deadline by following these steps:
    1. Login to CS computer lab machine. For more details, please refer to CS lab reference page.
    2. Go to your own handin directory by executing cd /p/course/cs367-ms/public/handin/
    3. Go to the requirement assignment directory, for example p1
    4. Handin all the required .java files as per the specification and any additional java files that you have implemented.
  • Step 2, Grading: Assignments are graded by the course TA(s) and/or Grader(s) using specified grading standards.
  • Step 3, Solution: Solutions for programming assignments will not be posted.
  • Step 4, Graded: When grading has completed for an assignment, an announcement is posted on the program announcement page. You will receive your grades in your hanin directory.
  • Step 5, Regrades: You may request a regrade of your assignment within one week after the graded assignment is announced if you believe your work was incorrectly graded. For programming assignments, you may point out minor corrections to your code (a few lines) if they result in significant differences in execution. Request regrades by emailing the grader named in your grade report.
  • Step 6, Learn@UW: After regrades are completed on an assignment, scores are then uploaded into Learn@UW. Once scores are uploaded, in Learn@UW you can see grading statistics such as class averages.