cs445 - Spring 2009


1. Introduction

The purpose of the project is to give you the opportunity to practice the concepts discussed in this class. The requirements are purposely somewhat vague such that you can interact with the client (that's your instructor) to figure out the detailed requirements.

Before we get into the functionality detail, I want to remind you that detail about the programming language, the platform on which the project will be tested, unit-testing, and how to submit your work is available in the syllabus.

Sections 2 through 4 in this document cover acceptance criteria for the project, Q&A, and a description of how you can earn extra credit for the project.

2. Acceptance Criteria

Your executable will read from standard input and write to standard output.

Here is the minimal set of commands that will be used to test your application and the expected results. To be sure, the person testing your work will be using a much expanded set of tests.

3. Questions and Answers

Some answers to questions asked by students in relation to this project.

4. Extra Credit

The main purpose of this project is to practice object-oriented analysis, design and programming, not to teach you web development frameworks or relational databases. As such, you do not have to develop a web interface for this project, nor do you have to interface with a real relational database.

However, you can get extra credit for doing development work that's not required by the project, as follows:

  • create a web interface: 25%
  • interface with a relational database (PostgreSQL or SQLite -- no other database will be accepted): 25%

You may not claim any extra credit if your project doesn't work from the command line flawlessly.

The web interface will be tested using Firefox 3+. SWING applications or similar will not be accepted.

5. Project Description

I am the owner of a web site where I get a fair amount of traffic on a daily basis. One way I generate revenue from the web site is to sell ad-banner impressions on my web site's pages.

I have multiple sales people selling the inventory. Since they use spreadsheets to keep track of what they're selling and what they think is available to sell, we find ourselves very often in a situation where we sell too much and then cannot deliver the impressions sold. Other times we have inventory that goes wasted because nobody knew it was available to sell. All these problems are mostly due to the fact that keeping spreadsheets in sync is too difficult and error prone.

The time has come for me to commission the creation of a web-based system that helps me, my sales people, my ad operation employee and my accounting employee manage the web site inventory in a centralized fashion.

My web site has the front page and then sections (e.g. news, weather, sports, business, entertainment, classifieds, etc.) and sub-sections (local news, nationa news, world news, currency, personal finance, portfolio, baseball, NBA, football, soccer, movies, concerts, jobs, cars, etc.)

All site pages have real-estate reserved for standard IAB ad banners. See the Interactive Advertising Bureau's web site for more detail. Currently each page on my site can display a 728x90 unit at the top (leaderboard), a 300x250 medium rectangle on the left hand side and a wide skyscraper on the right hand side; the front page also allows for two other placements, two 180x150 rectangles.

On a regular basis my employee in charge with ad operations will need to update the system with the projected number of page views for each section and sub-section of the site. She will use the web interface to select a section, sub-section and a date (today or in the future) and then she will enter the projected number which is a positive integer. I should be able to perform the exact same function.

Sales people should be able to view projected and available inventory for any section, sub-section, placement and date, book a portion or all available inventory, cancel a booking. The booking will include the name of the client and the CPM. They should be able to see their own bookings but not bookings created by other sales people.

My VP of Sales should be able to view projected and available inventory for any section, sub-section, placement and date, book a portion or all available inventory, view all bookings made by sales people, cancel her own bookings, cancel a booking made by a sales person, cancel committed inventory if the value of the deal being canceled is less than $5000. When a booking is canceled, then the sales person that created the booking must be notified. When committed inventory is canceled, then the sales person, accounting and the site owner must be notified.

I, the owner of the site, should be able to do all the things my VP of Sales can do except that there is no limit to the value of a deal being canceled.

Accounting should be able to turn a booking into commited inventory upon receipt of payment or for clients that have a good credit rating. When a booking is approved and becomes commited inventory then the sales person that created the booking and the VP of sales must be notified.

Last update: Jan 10, 2009 Virgil Bistriceanu cs445 Computer Science

$Id: project.html,v 1.4 2009/01/10 14:54:44 virgil Exp $