Your goal for this sprint is to get the groundwork laid out to produce a successful software project. You should create a git repository on Github, ensure all group members have access to the project, and you should have project approval.

Part 1: Planning

You should complete everything in the "Proposal/Project management" section of the project page. Keep in mind that these documents may be updated throughout the rest of the course, but an initial version is due for Sprint 1.

  1. You should have a proposal document that has a description of your project in some detail. This should be several written paragraphs that expand what you described in the project survey.

    • Create a /doc/proposal.md document

    • Include in the document a project vision statement (see Chapter 1)

  2. Your planning system will be your GitHub projects tab.

    • Create a project board on the GitHub project for your group with at least a TODO, DOING, and DONE column and add your group members.

    • Add tasks to the TODO column, drag any in-progress tasks to DOING

    • All tasks should be accomplishable statements, e.g. "Create unit test for database population method"

  3. You should have an organization/roles document that describes accurately what each member will contribute. This is a short document, but you may write any details necessary.

    • Create a /doc/organization.md document that describes your roles Create a

    • /AUTHORS file that contains only a line separated list of project members

  4. Miscellaneous documents

    • Create a /LICENSE file that contains your license. Check out Choose a License for guidance on this choice. If you choose to keep the project "closed source" (still public), then your license should note a copyright, year, and all rights reserved.

    • Create a /README.md file that explains the project and how to build the project. Check out other people’s work on Github for inspiration. Be sure to use nice formatting.

    • Create a /.gitignore file matching your particular project structure. You may generate one from http://gitignore.io.

Part 2: Prototype

Documentation is a useful tool to get the "ship sailing" so to speak, but it is important to explore the tools and technologies that you will be using to implement the software. You will build simple prototype that shows that you have started looking at the project and how to get it done.

For example:

  • If you are building a website, build one or two non-functional pages that use the same kinds of javascript libraries, back end libraries, databases, and other tools that you will be using.

  • If you are building a game, get a basic window showing and have the ability to accept input and show basic graphics (does not need to be fancy!).

Strong prototypes will:

  • not include fully finished features

  • have a build system in place for reproducable dependencies and builds

    • This means that you do not solely use your IDE for building or are just writing bare text files, but can script the build in a terminal. Your IDE may invoke these scripts.

    • Example build systems:

  • include proof of concept unit tests that demonstrate a working knowledge of setting up and running tests

  • be well documented

    • For example, if using Python, all source should be commented with PyDoc comments

  • be well formatted, idiomatic code. Use a code linter (built into some IDEs) and verify that you are programming with quality.

    • PyLint (Python)

    • eslint (JS)

    • Code formatting/warnings in any modern Java IDE (please use IntelliJ)

Evaluation

Points on the first sprint will be split between the two parts. Detail oriented work will receive full credit. Show your work! If you encounter problems, note them in the project documentation. Feel free to add MORE documents than specified!

Each group member should have commits in the repository. Group grades are not assigned as a whole, but for individual members. It’s okay if a particular member has more work than others, but all must participate.

Out of 20:

  • (-[0,5]) Misuse of git or other tools

  • (-[0,5]) Any single group member not participating

  • (10) Correct files in place with correct contents

    • (2) /doc/proposal.md

    • (2) /doc/organization.md

    • (2) /AUTHORS

    • (2) /LICENSE

    • (2) /.gitignore

    • (2) /README.md

  • (2) GitHub Projects tab is set up and has relevant contents

  • (8) Prototype code exists in /src

    • Testing system in place

    • Build system in place

Files

Your GitHub project will have the following files:

  • /doc/proposal.md

  • /doc/organization.md

  • /AUTHORS

  • /LICENSE

  • /.gitignore

  • /README.md

  • /src/<your source code goes here>