CSIS 314 - Project Description

Project Description

Each student will design and implement an end-to-end software system to solve the requirements of the project listed below.

Project Requirements:

You are going to build an online, interactive challenge-ladder.

A challenge-ladder is conceptually just an ordered list of players participating in some game played head-to-head over time. The objective is to challenge players ahead of you on the list and try and beat them. If you beat someone ahead of you on the ladder, you move up on the list. A variety of rules will govern how challenges are issued and the effect on players of winning or losing - stay tuned.

Your system of software will need to meet the following requirements. Users will:

In addition, your software must enforce rules about who may challenge who along with match and game scoring. Specifically the rules are:

Hardware and Software Platform:

Development will take place using the so-called "LAPP stack" that is composed of Linux, Apache, PostgreSQL, and PHP. We will also use a cloud computing platform to run a complete LAPP stack on a virtual private server (VPS). In order to make our lives easier, we will mirror the deployment configuration in a local environment using a "virutal machine." Development and testing will be done on your local system in the virual machine and then pushed to the "production" environment running "in the cloud." Instructions for setting up your local development ennvironment and the remote VPS will be provided.

I have created two databases for you to experiment with. The first, called teach_yourself, is the database used in the book Teach Yourself SQL. You can use this database to test and experiment with the queries in that text. You can create and populate the database running on your local virtual machine with this database for homework assignments.

The second database I have created is called ladder. This database has the schema (e.g., tables/relations and fields/attributes) you will use for your project. You should not deviate from using this database schema for your project. The ladder database is populated with a few rows of data that you can query. The SQL data-definition statements that were used to create this database are available here along with some some data.

I also have an Entity-Relationship (ER) diagram and a Universal Modeling Language (UML) diagram of this database available.

We will also be using the programming language PHP, a programming language that is usually combined with HTML web pages to create interactive web sites. PHP provides server-side computation and is especially useful for providing the "middleware" programming logic that sits between web pages and server-side services such as database management systems. Here is an example HTML form that invokes a PHP script to process the data collected by the form.

Project Details:

You will be building a complete end-to-end system of software that meets the functional requirements stated above.

The information about the ladder will be stored in a relational database.

The front-end graphical client will be a standard web-browser. As a part of your testing you should ensure that your software works reliably and correctly with various versions of currently used web-browsers.

The bulk of your project will consist of PHP programs that implement the required functionality by accessing the database, consuming input from HTML forms and dynamically creating and outputting HTML web pages.

I suggest you take the following approach to design and development. Consider the requirements that have been provided. Then, for each of the operations a user will need to perform, consider how you will implement that functionality. Begin by implementing minimal functionality (note that you do not need to build things in a particular order - e.g., you can manually enter players using interactive SQL before you implement a player-registration form and function). You will then need to tie all of the functionality together into a complete system.


There will be a number of project-related assignments in the form of progress "reports" or "milestones". The schedule for these milestones is found in the schedule of homework assignments.

A description of the milestones follows:

  1. Evidence that you have deployed a LAPP stack "appliance" that is running and available on a VPS; you should also have a database deployed there for your project. You will need to provide to me with the URL for your VPS and I should see a placeholder HTML page with some basic information that identifies the site as being yours (e.g., your name)
  2. A design "map" that describes each of the web pages you plan to implement (either statically or dynamically via PHP) and their relationships. For example, your starting page may be named ladder.html that allows a player to either sign on, register as a new player, or unregister themselves. This page would likely have links to other pages such as a page to report a score, issue a challenge, view the current standings, etc.

    You should provide as much detail about the design and implementation of each page as you can.

  3. Evidence that you have begun to implement web pages and have at least one PHP script that accesses and/or manipulates data in the database. This could be a sign-up page, a current-standings page, etc. You do not need to have a complete system, but must have at least one relatively functional page that accesses the database that I can visit.
  4. Code listings. At the end of the course, you will provide online access to your documented and commented PHP scripts. You do not need to submit hardcopy of any of your HTML or PHP pages. All PHP scripts and HTML pages should be well-constructed and documented as appropriate.

Project Grading:

This project is a significant part of your course grade.

The progress milestones listed above are worth 30% of the project grade. Each milestone is an equal fraction of that 30% (e.g., if there are 5 milestones then each is 6% of your project grade) and the grade you receive for each milestone is either a full fraction (e.g., 6%) for meeting the milestone or 0% for failing to deliver.

At the end of the course, your software system will be accessed online and graded. The grade you receive will comprise the other 70% of the project grade. The grade will be heavily weighted toward functionality - i.e., does it meet the design criteria given above and any additional criteria specified in class. Failure to meet the basic design criteria will result in very poor grade for this project.

Prior to finals week I will provide you with the specific "grading template" I will use to test, evaluate, and grade your project during finals week.

Last modified: , by David M. Hansen