Group Project Proposal
Everyone must form into groups of 2-3 students. Each group must then decide and agree upon what web application they
would like to build. Once that decision is made, then the group must put together a ‘‘project plan’’ that details how
this application will be built, and how the work will be divided among the group members. Finally, all of these
decisions must be written up into a paper and submitted to the instructor via email.
Due: Monday October 29, 2012 by 5pm
In the past students have been very creative at thinking about what types of applications. Here are some examples of
project ideas I’ve thought of or seen in the past:
- Gradebook system for TAs and Instructors to use to keep track of grades
- Microblogging platform. Twitter is actually written using Ruby and Rails, and is surprisingly little code. You can write something similar.
- Review site like Yelp. Users can submit reviews of local restaurants.
- Knowledge Base. Tech support is difficult; but many places use a "knowledge base" where people can write up and store known solutions to problems.
- Discussion system where users can participate in a back-and-forth discussion
- Image system like Flickr, but with added functionality for providing critiques
- Customer Feedback system where customers can leave feedback about a business
- Recipe site for submitting and discussing recipes
Each project must include:
- At least 2 controllers / resources
- Authenticated user accounts if that makes sense. It might only make sense for administrators; that’s OK. Or you
might want everyone to have an account. Its up to you.
- Form validation for at least one of the forms used for data input
- Long-term storage of relevant data in models
- Multiple different ways of viewing the data
Project Plan Requirements
Once a project is chosen, the group must put together a project plan: a plan of action that shows how the work needed
will be accomplished. The project plan should include details about the what, when, and how of the project. The
important pieces of the project plan include:
- Separate the system in to a list of ‘‘components’’ or ‘‘features’’. Ideally, you would work on each feature separately and then one additional step would be to ‘‘integrate’’ them together. For example, one feature might be ‘user authentication’ and another might be ‘submitting and storing data’ and another might be ‘simple view of data’ and another might be ‘aggregated view of everyone’s data’
- Choose one feature to serve as your ‘‘Milestone feature’’. The next assignment is to have this milestone feature completely working, even though the rest of the project doesn’t work yet. You get to choose which feature is this milestone feature. Choose well; it should be a feature that doesn’t require the rest of the system functioning.
- Assign the various features to different group members. A single feature, if it is sufficiently complex, can be assigned to multiple group members if necessary. This is the part of the plan that describes how the work will get done.
- Don’t forget to include in this assignment the ‘‘integration’’ work. Integrating everyone’s code into a working
system takes time and effort.
- Don’t forget to include in this assignment the work required to test the application. Someone should spent some time
explicitly looking for bugs and trying to make the application do things it isn’t supposed to do, like crash.
- Choose internal deadlines for all of these features. To do this, you will need to think through dependencies:
what needs to be done before I can implement this feature. For example, it is hard to implement an administrator’s
interface before you have the ability for administrators to log in. It is also hard to integrate the features until
they are (mostly) finished being written. Testing should be done throughout the process, but include testing
Project Plan Document
Once all of this work has been done, you need to write up your complete project plan and turn it in to me. This
project plan should include
- What web application you want to build
- Why this is an interesting application to build. Convince me.
- What are the different pieces (features) of the application. Here, you both need to show me how it will be
implemented, and convince me that implementing it is feasible.
- What are the details of the plan. Who will do each piece of the plan, by when?
There is no page limit for this document. It can be as short or as long as necessary. However, remember that I get
bored easily; shorter documents are better than long documents. I’m guessing they will be about 5-6 pages, but that
includes lists of features and tables of who will write each feature and when it will be done by, and possibly mockup
screenshots if appropriate.
Once you’re done, someone in your group should send the document to me via email at
Due: Monday October 29, 2012 at 5pm
Class members looking for a group
It is your responsibility to find partners for this project. Individual projects will not be accepted, and I will not
form people into groups. However, if you don’t have a partner, I am happy to list your name and email address here. If
you are looking for a group, please contact one or more of these people to discuss ideas and group formation (and/or
email me to have your name added to this list).
Here is a list of people who have emailed me looking for a group.