CPSC 304, Preliminary Proposal

Page organization

Goals and motivation

The goal of the project is to allow you to have the freedom to design your own application; we want to let you have the freedom to concentrate on some aspects and not on others. A consequence of this is that we won't be telling you exactly what to do.

Since we don't expect you to read our minds, this is one purpose of the checkpoints - we give you feedback on the project and tell you if you're on track to do well and if not how to get there, without penalizing you for not being able to read our minds.

However, for those who want a bit more of an idea of what's an acceptable project, we offer the following rough guidelines. We expect that each application should eventually have:

As well, you can use the project from a previous term as a guideline for what is complex enough for a sucessful project. You may not model UBC's data (discussed in 304 class from previous years), employee supervision (discussed in textbook), a book store (project topic in this example), MP3 storage (discussed in class from previous years), or project given to you in tutorial. Additionally, this must be a new project - you may not reuse a pre-existing project.

What to turn in

One member from each group must turn in the following using the handin directory "project-proposal". To do so, you'll need to get an account on the CS ugrad machines. Briefly, the name of the assignment that you should use is "project-proposal". The command you should use for this assignment is "handin cs304 project-proposal", and to use the default setting, all of your files that you are submitting must be in a directory called ~/cs304/project-proposal. Note: If you want to ssh in to use the handin script, try logging onto remote.ugrad.cs.ubc.ca. (this should only be a page or less long):

Sample submission

As an example, if I were going to turn in a banking proposal, I might submit the cover page and something like:
The domain that I'm going to model is going to be the banking domain; i.e., the kind of information that is stored about the accounts in one bank.

The aspects of the bank that I will be modelling will be the information relevant to the customer information in the bank. This includes things like the the accounts that a given customer has, information specific to the customer (e.g., the customer's name and address), and the customer's credit cards. There will be a number of different kinds of accounts, and some of these accounts will have additional information to let customers know if that account is right for them (e.g., a mutual fund account will contain information on what stocks are included in the mutual fund and how the fund performed over the past year).

There will be two different classes of users of the system: the customers, and the bank employees. The customers will be able to access their own accounts, and transfer money from one account to another. They will also be able to update some of their personal information, like their bank account password. The bank employees will be able to access all of the customers' data - both the customer accounts and the customer personal information. Only the bank employees will be able to change things like the customers' SIN. Bank employees may reset the customers' account passwords, but may not see them.

This project will be done using the CS department's oracle database and using Java and JDBC. I do not anticipate using any special software or hardware.