cs445 - Spring 2011


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.

And here is the XML file mentioned in the acceptance examples.

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+ or Chrome.

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 website has has the home page, and then various sections and sub-sections. For example "News", "Weather", "Entertainment" are sections, whereby "News Local", "News National", and "News World" are subsections of the "News" section.

Each page on the site belongs to a specific section / sub-section. This is important because the way advertising is typically sold on the website is not by page, instead by section and placement. For example an advertiser such as "ACME Computer Security" may want to buy 1.5 million impressions of the wide skyscraper in the "Business" section, whereby an advertiser such as "Buy Best" could buy 5 millions impressions on the home page header banner and 3 million impressions of the same placement (header banner) on the rest of the site (this is called ROS - Run Of Site).

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 / sub-section of the site. She will select a section / sub-section and a date (today or in the future) and then she will enter the projected page views number which is a positive or negative integer.

Sales people should be able to view projected and available inventory for any section / sub-section, placement and date, book a portion of or all available inventory, cancel a booking. The booking will include the name of the client, the name of the sales person, and the CPM (Cost Per Mille aka cost per thousand impressions).

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: Apr 7, 2011 Virgil Bistriceanu cs445 Computer Science

$Id: project.html,v 1.4 2011/04/07 21:51:43 virgil Exp $