cs445 - Fall 2015 - Class Project

SAD - a Special Advertising Directory

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.

Lastly, the best project will receive a prize of $300 in cash.

2. Acceptance Criteria

The basic implementation of the project assumes the application runs on a server and that various clients access it through a REST interface.

Sample XML/JSON files used to test your functionality will be available here soon.

Scenario that will be used to test your application: coming here soon.

3. Questions and Answers

Check here for answers before asking your TA or the teacher.

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, the use of a database is expressly prohibited for the core project implementation.

There is a finer point to be made about the databases ban, namely that most students would start their from with the design of a database schema, the way they learned in the Databases class, instead of thinking about use cases, entity objects, etc.

In fact, the database should be a plug-in to your application, the same way the delivery mechanism should be, whether command line, web, etc.

We can talk about extra credit iff (if and only if) your core project implementation works impecably. This point will not be debated.

If you complete your core project implementation on time and feel adventurous, then you can get extra credit for implementing a web client for the customer.

5. Project Description

Most student taking this class are too young to remember the Yellow Pages, though you can see a picture nearby.

Yellow pages refers to a telephone directory of businesses, organized by category, rather than alphabetically by business name and in which advertising is sold. The directories were originally printed on yellow paper, as opposed to white pages for non-commercial listings. The traditional term yellow pages is now also applied to online directories of businesses. -- Wikipedia

An online advertising directory is very much like the yellow pages.

There are many online advertising directories out there. You can see the one maintained by the IAB here

Well, I want to build a better online advertising directory (OAD) so I'm asking you to write the software that allows me to do it.

I call my business SAD because it's a Special Advertising Directory, as opposed to the Ordinary Advertising Directories (OAD).

Each advertiser that wants to be in the SAD can buy one or more listings in the directory. Each listing contains some text that describes what the business is about, an image and a link to the advertiser's website.

Each listing has a price, a start date and an end date.

Listing can be "regular" or "featured": a featured listing can be either "category-featured" or "home-page-featured".

A "category-featured" listing is displayed prominently every time somebody selects the category for viewing. A "home-page-featured" listing will be displayed prominently only on the home page of the directory.

A featured listing is also given more space and a better placement in the page (assuming the client is a browser or a smartphone app).

If multiple featured listing are found, then they will be displayed based on a system-wide setting that allows the following: random, by advertiser name, most recent first, most profitable first.

A directory user can select a category and view all the listings in that category. If no category is specified, then home-page-featured listings will be displayed.

An administrator can create categories, modify existing ones, or remove them. An administrator can also create listings in the directory and edit advertiser information.

When advertisers call with a question about the service, our customer service people should be able to look them up by email address, or their last name, or by the name of the business, or by their phone number, or by their Facebook, or Twitter or Linkedin information. If found, then our customer service people should be able to see past listings and active listings.

The other thing that I need is some sense of how we're doing as a business. Here are some of the things I want to know:

  • How many active listings do we have? Please break down by listing type and by category
  • How many customers did we get over the last month, three, six, nine, 12 months, since inception?
  • How much money have we made this month, last month, over the last three, six, nine, 12 months, since inception?

Here is a list of possible future enhancements:

  • A listing can belong to multiple categories
  • The admin can limit the number of featured listings that are displayed
  • Each listing can have keywords that the advertiser believes are relevant for search engines

That's all for now ... is this super-complicated? Can I get this by mid-November?

Last update: Aug 30, 2015 Virgil Bistriceanu cs445 Computer Science

$Id: project.html,v 1.1 2015/09/13 14:28:49 virgil Exp $