Some assignments for this class will be done in teams (pairs or triples). Working, especially programming, in teams does not mean each person writes part of the code and the team simply pastes together these contributions. Each person is responsible for every line of code, documentation, etc. turned in. This responsibility extends over written assignments as well. It includes getting or losing points for quality, being able to explain the work, and also incurring penalties in case of plagiarism or other violations. That said, we will sometimes ask you questions individually and, if you are unable to answer them, we may give you less credit than your teammates. In short, working is teams is meant to help you learn material better, not to enable you to do less work than you would have if the assignment had to be done individually.
For team projects, you may not discuss the assignment with a student not on your team.
Though only one person should run the handin script, all team members take responsibility for what was handed in. By handing in work, you acknowledge your responsibility for it in its entirety.
We recommend that teams developing software use pair-programming techniques (of the form preached by Extreme Programming), though this is a suggestion, not a requirement. Pair-programming in a nutshell:
- Both programmers share a single computer, monitor, and keyboard.
- One person is the typist, the other watches what is being typed and critiques it.
- Programmers switch roles at regular intervals. (Note that this is also good for preventing RSI!)
- Both programmers jointly own every single line of code, regardless of who typed it.
Assignments are broken into groups. You will work with the same team for every assignment in a single group, and you may not work with anyone you worked with in a previous group. Once you have selected a partner please inform the course staff. If you are having difficulty finding someone to be your partner, please contact us and we will attempt to match you with another student.