Final Project

Due Sunday, December 18, 2011 11:59PM

Note: this page is in draft form, revisions will occur as issues arise

The goal of the final project is to demonstrate your knowledge of Open Source tools. This is an open-ended assignment, so your grade will be determined based on the two key factors: how ambitious the project you choose is, and how well the project works.

In assignment 3, we wrote a command line tool to create and vote on surveys, and in assignment 4, we put together a web-based interface to this system to allow voting. For the final project, we will adapt this into a full featured web-based application. There are a wide variety of features that could be supported, and it is up to you how far you want to go. First, some requirements for this project:

Here are some suggested baseline ideas:

This set of functionality is enough to get you a satisfactory grade (B) on the project. To get an A, you will want to come up with some additional functionality on your own. Here are some examples of ideas (by no means should you do all of these!):

Note that you do not need to maintain data compatibility with the previous assignments, nor do you need to port any data over from the previous directory structure.  You will be storing your surveys and answers with Google App Engine.  App Engine provides a built-in object store which you should use.

To learn more about App Engine, please be sure to read the following web pages:

There are bound to be lots of questions. To address the major ones:

  1. How do I know if I've done an acceptable project?
    I expect the size of this project to be about 1.5 times the size of a homework. It should take you between 2 and 3 weeks. If you want feedback about an idea, you can submit it to the TA (be as specific as possible). Or even better, come by my office hours before class on a Wednesday.
  2. Can I do a group project?
    Although group projects are often a logistical nightmare, you can work in groups provided: (1) You do a project that is n times bigger if you have n people; and (2) Each person in the group accepts that their grade on the project will be affected either positively or negatively by the other group members.
  3. Can I write the project on my home computer?
    You may develop the project anywhere you want.  You can download the SDK for App Engine from the links listed above.  You can also download GIT here.  Be sure to hand in the .git repository and make sure you have tested your app before submitting.

  1. Can I use third-party software packages?
    You may use any third party software so long as it is freely available.  You must document in your developer guide what packages you use, if any.
  2. This project sounds stupid.
    That's not really a question. But you are welcome to pick your own project. If you want to do so, mail me to check if it's acceptable.


All projects must include documentation. The documentation must include two documents:

  1. A user guide to your program, which describes how to use the program
  2. A developers guide that explains how the project is designed and coded.


Via the homework submission system, submit (1) your git repository, (2) your user guide, (3) your developer guide, and (4) the project URL we can visit to try your project. The git repository should be created as a compressed tar archive of your .git directory, and should include no other files.  To create, you can do the following:

cd myproject
tar -cvf project.git .git
gzip project.git
# now submit project.git.gz

If you do not have gar, you can use zip:

cd myproject
zip -r project .git
# now submit

Do not use other formats/methods.