A team project is an essential way to practice software engineering skills in a real-world setting. Over the semester, each project team will develop the following artifacts for their project:

The goal of the project is not to write a significant amount of code. In real-world projects even a few hundred lines of code may be sufficient to make a significant contribution. Rather, the objective of this project is to obtain first-hand experience with the expectations of an actual software project, particularly those related to design and communication. Each project deliverable is specifically modeled after those encountered in open source projects.1

Teams

You are responsible for forming your own project teams. Teams should comprise 4–5 members. When joining a team, consider both the project and the members: your motivation may be lacking if you are not excited about the project, and a team where all members have the same skill sets may not perform as well as one where members have more diverse backgrounds.

Participation

Placing your name on a deliverable signifies that you have contributed significantly to its intellectual content and to its completion. Including your name when you have not satisfied these criteria will be considered to be a violation of the assignment’s Help Policy. It is expected that each student can provide documentation regarding their contribution(s) to each project deliverable.

Note that enforcement depends on your peers (i.e., team members). If certain individuals are not participating significantly, the others should discuss it with them to seek resolution and, should it prove if necessary, schedule a meeting with the instructor to address the concern. The prior documentation regarding individuals’ contributions will be consulted in such cases. In addition, team members will complete a peer evaluation at the end of the project to provide feedback on individuals’ contributions and how well individuals work together as a team.

Description

image of Quoridor game play

Quoridor is a 2- or 4-player strategy game that emphasizes logical reasoning. The objective of the game is to be the first player to reach the opposite side of the board. On a turn, a player may either move his or her pawn or place a wall, which blocks the path of pawns and forces pawns to move around them.

Rules

Game play is fairly simple, and the rules are summarized below. Complete rules are available online in case clarification is required.

Components

  • 9x9 game board
  • 20 walls
  • 2 or 4 pawns, depending on the number of players

Game Play

Each player places a pawn in the center of the row on his or her side of the board. Walls are divided equally among the players (10 each for 2 players, 5 each for 4 players).

On a turn, a player may perform one of the following actions:

  • Move his or her pawn to an adjacent square, horizontally or vertically (but not diagonally)
  • Place a wall horizontally or vertically between 2 sets of 2 squares as long as that wall does not block a pawn’s only remaining path to the side of the board it is trying to reach

If the player has no more walls, the player must move his or her pawn.

Pawns must move around walls; they cannot “jump” over them.

When two pawns occupy adjacent squares, a player may “jump” over the opponents pawn, thus advancing an extra space. If a wall is behind the other pawn, then the player may move to the left or right of the pawn (but not jump over the wall).

The first player whose pawn reaches the opposite side of the board from which it started is the winner.


  1. The development practices of open source projects vary widely. Few require the same formality as the deliverables in this course, but many open source projects incorporate elements of them.