Final Project

Due December 16, 2005 before midnight

* Extended to December 17, 2005 before midnight *

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 UNIX 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 assignments 3 and 4, we put together a web-based system that can be used to create user accounts and store data with the users. For the final project, we will adapt this this into a web-based application. There are a wide variety of applications we could build (see below if you have your own ideas), but one that we have to suggest is the following:

Similar to Craig's List, we can make a system where users can list and browse items for sale. Some specifics about this system:

This set of functionality is enough to get you a satisfactory grade 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!): This is a good opportunity to get what you want out of this course. If you want to learn Perl, write your project in Perl. Or you can mix and match languages. Alternatives include Shell, Python and Javascript (we do not cover the latter two languages, but you can learn them on your own).

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 one of the TAs (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, but we require the projects to run on the NYU CS Department machines.

  4. Can I use third-party software packages?

    You may only if: (1) They work on department machines, and (2) They are freely available.

  5. 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 one of us to check if it's acceptable.

Documentation

All projects must include documentation. The documentation should cover two aspects: a user guide to your program, which describes how to use the program; and a developers guide that explains how the project is designed and coded.

Submission

Submit via the homework submission system, along with the url we can visit to try your project.