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:
- Users should be able to add a new listing for an item,
including information about the price, category, location
and offer date.
- The owner of an item should be able to change the listing
or delist it (other users should have no such access)
- Users should be able to browse all the items for sale
(from all users) by category. Users should also be able to
restrict browsing with price ranges and location information.
- A user browsing should be able to contact the seller about
an item via a web form. Submitting the form will
email the owner of an item (this is better than direct email as
a seller does not have to publicize their email).
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!):
- Allow images to be uploaded along with item descriptions
- Implement an administrative interface for a special "super user"
that can be used to change postings
- Show aggregate statistics
- Allow users who browse items to post public comments about an item.
- Search capability that also looks through item descriptions.
- Ability to monitor an item and receive email when your item is viewed.
- Bulk-entering of items: a user can submit a CSV file with a list of items,
and they will all be posted appropriately.
- Auction capability
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:
- 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.
- 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.
- 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.
- Can I use third-party software packages?
You may only if: (1) They work on department machines, and (2) They are freely
available.
- 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.