We use the game of chess to help you develop and demonstrate mastery during this course. Your development work is divided into different phases. Each phase demonstrates a different architectural concept or technology.
Phase | Getting Started | Requirements | Starter Code | Video | Description |
---|---|---|---|---|---|
0. Chess moves | doc | doc | dir | Moves | Initial chess project. |
1. Chess game | doc | doc | dir | Creating the game. | |
2. Server design | None | doc | None | Designing the chess server. | |
3. Web API | doc | doc | dir | Creating an HTTP chess server. | |
4. Database | doc | doc | dir | Persistently storing players, games, and authentication. | |
5. Pregame | doc | doc | dir | Creating an command line interface (CLI) for the chess client. | |
6. Gameplay | doc | doc | dir | Implementing gameplay with multiple players. |
⚠ Each phase of the project comes with starter code
located in the course instruction repository. At the beginning of each phase, you will copy the phases's starter code from the course instruction repository and put it in your chess repository. In order to make it easy to copy the starter files to your chess repository, you should clone the course instruction repository to your development environment. Otherwise you will be individually downloading dozens of files directly from GitHub.
git clone https://github.com/softwareconstruction240/softwareconstruction.git softwareconstruction240
Git is an essential software development tool. It allows you to quickly recover from mistakes, share your code with others, backup your code, and serve as a portfolio of your skills.
⚠ You are required to make multiple commits to your public Chess GitHub repository for each phase. Each commit should represent a minor milestone within a phase. For example, after passing each test you should commit your code. Usually, you should have at least ten commits for each phase.
Failure to properly document your efforts with your GitHub history may result in your assignment deliverables being rejected. So make sure you commit your changes consistently and often.
The following summarizes the deliverables you must provide for each of the different chess phases. Refer to the phase instructions for a full description.
Phase | Deliverables |
---|---|
0. Chess moves | 1. Complete pass off tests for the chess board and moves code. |
1. Chess game | 1. Complete pass off tests for the chess game code. 2. Optionally complete castling and en passant tests for extra credit. |
2. Server design | 1. Create sequence diagrams endpoints, services, and data access components. |
3. Web API | 1. Complete pass off tests for the HTTP server 2. Create and complete unit tests for chess service. |
4. Database | 1. Complete serialization pass off test. 2. Create and complete unit tests for the chess database. |
5. Pregame | 1. Create and complete client unit tests. |
6. Gameplay | 1. Complete pass off tests for WebSocket server. 2. Demonstrate that you can play a game of chess using your server and multiple clients. |
The deliverables in blue represent tests provided by the course start up code that you must pass. The deliverables in green represent unit tests that you must write and pass.
When you complete the entire project, you should have something similar to the following where two client command line programs take turns playing a game of chess.