4 — Implementing Protocols, Analyzing the Project

Due Thursday, September 20, midnight

Delivery You must deliver two artifacts:
  • client, the remote spreadsheet client of the implementation task;

    Place this client in a folder called 4. All auxiliary files go into a subfolder called Aux.

  • plan.pdf, the project description resulting from the design task.

    Create a folder named Santorini with a subfolder Design. Place plan.pdf there.

Implementation Task Implement a client for the TCP spredhsheet server. See 4/given-server-spread.md, which has been deposited in your git repo.

The client accepts all JSON values that are well-formed according to 3 — Exploring Your Favorite Programming Language Some More. It does not check validity of these JSON values that the user inputs. The client connects to a remote spreadsheet server according to the given protocol. The server will check the validity of the JSON values and respond with -666 for invalid JSON values.This is an awful way of signaling an error but suffices for this warm-up project.

Parametrize your client over the IP address of the server. Connect at port 8000.

Design Task Read the description of Santorini. These rules are not the original ones; instead they represent how your instructor would like to see the game done. It is thus pointless to search for implementations on the web; nobody else has such strange taste as your instructor.

We will develop the software to run Santorini games between two automated players. Your friends will supply the code for autonomous players, and you will provide the framework for running fair games between such players. Since you have many friends, you should make plans to run automated tournaments that pitch every player against every other player.

Write up a project analysis. The analysis should consist of two parts. Part 1 describes the pieces of software that must be involved. Ask yourself This prose uses "who" and "they" in reference to pieces of software. Think of them as possibly independent "actors" and humanize them temporarily.
  • what are the pieces that make up a player

  • what are the pieces that make up the game software

  • "who" knows what, "who" needs to know what, and how do "they" communicate

  • what is needed as common knowledge to make communication successful.

Part 2 describes how you should proceed about implementing these pieces. Keep in mind that you wish to have "demo" software soon so that a potential client can admire fully working prototypes.

The memo must not exceed 2 pages using a 12-point font/16point base line format with a 1.5in margin all around. Use at most one page per part.