Welcome to Project Wars. This educational game is designed to help you experience various concepts in project execution.

Your goal is to develop and ship an IT product. To do this, you must produce 10 pieces of integrated code. The customer will inspect 8 pieces of code. So long as the customer finds no major bugs in the code, and at most 2 bugs, you win the game. Note these initial numbers can change depending on various circumstances that occur in the game.

There are two key things you need to produce enough integrated code. The first thing you need to do is hire competent project team members. The second thing you need to do is make them work. Every week, your project team will encounter opportunities and problems. With a little luck, how you manage hiring, working, and the opportunities and problems will determine how successful your project is.

Below is a simple tutorial for Project Wars:

Starting Project Wars

When you start Project Wars, you will see the below page:

Project Wars Start Page

Key in a user name and password, and select how much money you wish to allocate to hiring the first hires on your project team, then click the proceed button.

Please note a couple of things:


After the starting screen, or when you select the "hire" option, you will enter the hiring screen, which looks like this:

hiring screen

You will see a list of eligible candidates to hire on the left, and the list of people you have already hired and want to hire on the right.

To select a candidate to hire, click on the candidate on the left. To unselect a candidate, click on the candidate on the right. You cannot unhire an already hired candidate, but instead must terminate them in the working screen.

Candidates have five statistics. Initially, these statistics have a range of 1-6. However, various encounters can raise or lower these statistics.

If you have entered from the starting screen, you need to click the proceed button on the top righthand corner to continue.


You will spend most of your time on the Working page. The working page is divided into three parts:

The menu section has seven options of which five are relevant to playing the game. The other two options- About and Help provide background and support for playing. These options are:

  • Hire: brings you to the hiring screen. Note when you hire in the working screen, any person you hire is delayed for two weeks. This reflects that people you hire can't start work immediately, but need time to settle in, and be trained to local procedures.
  • Work: This allows you to issue commands to your developers.
  • Submit deliverable: This option only appears if you have sufficient integrated code cards. When you submit deliverables, one of two things can happen: (1) The customer is happy and you win the game, or (2) The customer is unhappy and complains about your bugs, in which case, you lose the week.
  • End turn: This causes your developers to perform the task you assigned them. It also causes various encounters to occur.
  • Reset: If you're really stuck, you can reset and start the game all over again.
  • The concepts section shows you the concepts in play. There are two major parts in the concepts section, the concept summary and the concept cards. The concepts summary shows you the overall effect of the concept cards in play. It looks like this:

    Concept Summary

    Hovering over the summary will show you which cards are affecting that score and how they are affecting it:

    Which Cards Affect Summary

    The picture shows the -4 Aid Others penalty is affected by two things. First, there is a default -2 to aiding others. Second, the card "Fundamental Problem" is making the situation worse by adding an additional -2 penalty.

    To the right of the concept summary is the list of actual concept cards in play. Concept cards in green give you a bonus (or don't give you a penalty). Concept cards in red give you a penalty. You can hover over a concept card to see what it does. For example, hovering over "Fundamental Problem" reveals:

    Hovering over a concept card

    Good (green) concept cards often cost budget. You can click on a good concept to discard it. When you do so, it will turn black. To undispose, click it again. The card is only truly dropped when you end the turn.


    The commands section looks like this:

    Commands Section

    It has a specification cards section, a design cards section, and a developers' section.

    The specification and design cards sections show how many specification and design cards you have and their status. The more specification and design cards you have (up to the game maximum), the less likely you are to encounter problems. Specification and design cards are either unclear, or of unknown status. The more unclear specification ad design cards you have, the more likely you are to encounter problems. Cards of unknown status can either be clear, or unclear. You can never determine whether a card is clear. However, unclear cards can be identified from a review.

    In the developers' section, you issue commands. On the left-hand side of this section, there is a leader column. You select who is to lead the project. Ideally, this would be the developer with the highest leadership score. Leaders can not do any work.

    Non-leaders can be issued with the following commands:

    Be careful when you use overtime- this increases the developer's skill, but causes the developer's character to decrease.


    Delivering integrated code costs you one week. The customer will randomly choose 8 code (plus any additional caused by problems). If any of these pieces of code contains a major bug or the customer finds 2 code (plus any additional caused by problems), you lose a turn. Otherwise, you win the game.


    When you "End Turn" in the Working Screen or the customer finds too many bugs in delivery, you enter the Encounters screen. This screen (1) summarizes your activity for the week and (2) Tells you of the things you encountered that week. Every day of the week (5 days), you will encounter one thing.

    Weekly Activity

    Three things are summarized:

    On the top and bottom of the page are a set of arrows. Navigating through those arrows allows you to view your encounters for the week. Encounters can be good or bad. A bad encounter will cause something bad to happen:
    A Bad Encounter

    Some bad encounters can be avoided. This requires your developers, leader or project to have certain characteristics:

    A Bad Encounter Avoided

    If the encounter is good, you often just receive the benefits. However, in some cases, a good encounter is avoided because you don't have certain characteristics. In other cases, a good encounter requires you to pay budget to receive it. If so, the encounter will ask if you want to pay budget.

    An Encounter Where You Must Make a Decision


    Self Joins

    The video here introduces students to joins where a table is summoned more than once. The concept of aliasing is also introduced.

    Materials covered in the W3C syllabus include:

    Natural Joins

    The video here introduces students to joins where the primary key and foreign key have exactly the same name and data type. I also advocate for not using this clause as it leads to sloppy thinking.

    Interestingly, the concept is not covered well by W3C, but is covered elsewhere:


    The video here introduces students to the minus clause that essentially is the opposite of a union clause. Note MySQL does not support the minus clause.

    The W3C syllabus does not cover minus for some reason.

    Not In

    The video introduces students to Type I nested queries- queries involving in and not in.

    The W3C Syllabus doesn't cover this very well:

    Not Exists

    The video introduces students to Type II nested queries- queries involving exists and not exists. It also introduces students to the problem of three-valued logic and nulls in SQL.

    The W3C Syllabus doesn't cover this very well:

    Simple Statistical Functions

    The video introduces students to aggregation in SQL and simple statistical functions like sum, min, max, average, etc.

    Materials covered by the W3C syllabus include:

    Group By

    The video introduces students to the group by clause in SQL aggregation.

    Materials covered by the W3C syllabus include:


    The video introduces students to the having clause in SQL aggregation- basically a where clause after a group by.

    Materials covered by the W3C syllabus include:

    Nested Statistical Queries

    The video introduces students to the any and all operators used to nest statistical queries.

    Materials covered by the W3C syllabus include:

    Insert Queries

    The video introduces students to use SQL to add records to a table.

    Materials covered by the W3C syllabus include:

    Update Queries

    The video introduces students to how to use SQL to change records in a table.

    Materials covered by the W3C syllabus include:

    Delete Queries

    The video introduces students to use SQL to remove records from a table.

    Materials covered by the W3C syllabus include:

    Creating Tables

    I don't teach the SQL commands to create tables, because (1) they vary considerably across commercial database platforms and (2) it is more efficient to create tables with a user interface you should never have to create tables programmatically.

    These are exercises for creating tables I use with my students.