Final Project

Due Sunday, December 14, 2003 at noon

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 Assignment 4, we wrote some simple tools for managing a calendar. These tools were command line based. For the final project, you should enhance these tools in the following ways:

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 twice the size of a homework. It should take you about 3 weeks. If you want feedback about an idea, you can submit it to one of the TAs or grader (be as specific as possible). Or even better, come by my office hours before class on a Tuesday.

  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 (sparky, slinky).

  4. Can I use third-party software packages?

    You may only if: (1) They work on sparky, 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.


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.