CS71 Project Overview

* In which, you can build something you've always wanted to implement!


Due May 10th, before midnight

Schedule:


Projects

The goal of the project is to build a non-trivial application together with a group.

Groups should have 3-4 people. The scope of the application should be large enough for each person to be responsible for a significant piece of functionality. By significant, I mean approximately the same level of effort as an assignment.

You have complete freedom in what you choose to build: you may make a game, web application, desktop application, or phone application. Your application may provide functionality related to NLP, AI, graphics, processing and aggregating data, etc. A successful project must have a purpose. It may be a niche or abstract purpose, but it must be something that can be used.

Constraints: You must write your project using an language which supports object-oriented programming principles. A major goal of the course is to design your project with well-defined modules. Your final submission needs to build (ideally, this should be automated) and run on the Swarthmore lab machines.

Project ideas

Games and novelties

Social Networking

Academic Software

Work flow and team organization

We will use an Agile software development approach called Scrum.

From wikipedia:

A key principle of Scrum is the dual recognition that customers will change their minds about what they want or need (often called requirements volatility) and that there will be unpredictable challenges—for which a predictive or planned approach is not suited.

Scrum aims to be a flexible and adaptive work flow. In Scrum, teams identify sets of features to complete within a short, time-boxed iteration. These iterations are called Sprints. Short iterations allow the team to re-evaluate their goals and assumptions, and to change plans if necessary.

For this project, sprints will last one week. Each sprint, the team identifies a set of goals to tackle. At the end the sprint, the team reviews what went well or poorly during the last sprint and sets a new set of goals to tackle in the next sprint.

A Scrum framework typically consists of three roles: a product owner, developers, and scrum master.

Your professor will the product owner. This role will represent the voice of potential users as well as future developers who may need to maintain and debug your projects. The product owner will be responsible for evaluating your progress as well as giving advice to help your project succeed.

The development team will be responsible for designing and building the product. The scrum master will be responsible for keeping track of progress during each sprint. For this project, team members will take turns being the scrum master.

You should create a wiki for your project. On the wiki, you will post your


Design document

In Week 1 and 2, you should write a design document with your team. This document should contain:

Each team should share a repository on github. Your project progress and documentation should all go on github as well.


Sprint deliverables

Each week, the scrum master should document your progress and set the list of goals for the next sprint on github. Check in your code. Ideally, I should be able to build and run all sprint deliverables. Feel free to use branches to save unfinished features which should not be part of a sprint.

Github has several features that will help you manage your progress for each sprint:


Lightning talks

Each week, your team will give a 5-10 minute talk about your project. In week 1, you will summarize your project goals and plan. In subsequent weeks, you should demo any progress and talk about one interesting thing you solved or learned that week.

Ideally, every person on your team should be a primary speaker for at least one lightning talk.


Final deliverable

Your final deliverable should include:

Because we are working in teams, don't forget to be professional.

As part of your project submission, you will be asked to fill out a performance evaluation of your teammates. Note that it is possible for group members to receive different grades, depending on their contribution to the project.


Grade heuristics