1 — The Plan 🔗

Due Thursday, 14 September 2023, 11:59:59pm

Motivation As a new developer, you will need to learn to plan. Try, fail, reflect, learn, repeat.

Delivery Create a directory called Q in your git repository.

Within Q, create a folder named Planning/. This is where you place the product of this week’s milestone (questions-about-the-game.md and sprints.md).

Background We are about to launch a "dot game" company. You have been hired to design and implement the software.

This novel company is for hackers, starting with your friends. The two founders and co-CEOs noticed how these people are bored and always want to demonstrate their tremendous programming skills.

This company will set up the ideal outlet for them. The company will provide game servers to which these hackers can connect player software and win prizes—for an enormous entry fee of course. The grand idea is this:
  • the company publishes a "plug in" protocol to which automated players must adhere;

  • the game servers allow such "AI" players to sign up for games;

  • once the sign-up period is over, the servers run the game; and

  • the owners of the winning player(s) will receive prize money, the losers will be allowed to pay an entry fee for the next game.

This course focuses on delivering robust software, but we will need some basic game-playing algorithm. Participating hackers must produce robust software because any mistake will be punished by termination. This may sound overly strict for these modern times, but robustness is the primary goal.

See The Q Game for the first game that the founders have in mind.

Tasks The CEOs have analyzed the game from the perspective of the overall goal and have identified the important components and layers of the software system. See The Components for the result of their work. You are their software developer, and you need to implement these components.

First you need a plan. That is, you need to arrange the components in a sequence of milestones that create the identified components and the overall system.

Write up a description for the first three sprints. These descriptions specify the goals for each milestone. For the second and third, describe how the resulting components relate to the first and second, respectively.

Constraint Each of these sprints should produce a (set of) component(s) of manageable size in about two days (16 hours) of work.

Deposit this planning document in a file called sprints.md in Planning/.

Second, you need to make sure you understand the game that the CEOs picked and how you think they want the rules to be interpreted. Analyze the rule description in The Q Game. Write up the three most important questions that you think the description leaves open—if any. Each question should be at most one line; if you think your questions demands a justification, you may optionally add an explanatory paragraph. If you don’t have any questions, say so.

Deposit these questions in a file called questions-about-the-game.md in Planning/.

Format Write each document as a business memo. Use mark-down to format these documents. The github server will render them as web pages. Consider installing a previewer for the mark down format if you don’t have one already.

Both documents must be less than one “page” when rendered for PDF printing, say from a browser or a previewer.