Project 1: Getting Ready

The purpose of the semester project is twofold:

  1. Provide you the opportunity to work in a team on a non-trivial problem in a distributed, asynchronous fashion
  2. allow you to make use of the techniques being covered in lecture related to requirements, design and implementation as well as modeling concurrency.

The first step in this process is to form a team and send Prof. Anderson an e-mail message listing the members of your project team. Do this as soon as possible. Desired Team Size: 3 to 4 people; CAETE students, who will be working alone, can skip this step. (If you're a CAETE student who would like to work with an in-class team, let me know!)

The second step is to discuss among the team how you will work together and what tools you will use to coordinate your design/development activities. For instance, you may want to take a look at the tools provided by assembla.com, the community edition of RallyDev's tools, or even 37signals BaseCamp. (If you have other suggestions, let me know and I will point to them here.). Regardless, pick a system and get all of your team members signed in and then use the system to complete the third part of this assignment. Note: if possible, you should arrange to allow the instructor and grader to access your project workspace as a guest.

The third step in this process is to select a project idea. In particular, you need to develop an idea for a system that can be developed by a team of three to four people over the course of roughly eight to nine weeks. The major constraint is that there must be some form of concurrency that is part of the application domain, such that you will be able to model the requirements of that concurrency using FSP and will need to make use of a programming language that supports concurrency when implementing your software prototype. You should include as much detail in your proposal as possible: basic information about the problem domain, why concurrency will be needed to solve the problem, how you envision splitting the work of the project across the team, and anything else you think is relevant to "selling" the idea. In addition, as we will be applying techniques from Head First Software Development during this project, you will want to find an idea that you will be able to generate user stories for; for an N person team, you will want to be able to generate at least (N*2) ± N stories.

Example project ideas include information systems that have the ability to spawn and monitor long running computations of some kind, information systems that monitor multiple streams of real-time data, games in which multiple entities may be performing actions at the same time, social network websites that provide their users with information about the activities of other users logged into the site at the same time, etc.

The topic proposal is due for teams of in-class and in-class plus CAETE students on Friday, March 6th.

The topic proposal is due for teams consisting only of CAETE students on Friday, March 13th.

This assignment is worth 20 points (10 points for getting your workspace created and using it to brainstorm and create the topic proposal, and 10 points for the topic proposal itself). Teams that do not provide enough detail in their topic proposals may be asked to work on a revision of their proposal with tight deadlines. The basic goal, however, is to ensure that all teams have an approved project idea by the Monday of the 9th week of class (or by the Monday of the 10th week of class for CAETE-only project teams).

Any questions? Send them to Prof. Anderson.

© Kenneth M. Anderson, 2009