Project Proposals
The centerpiece of this course is a team software project—but what projects will the teams work on? This is where you come in: You may propose a project, and potentially serve as customer for a team who will build it for you.
By submitting a proposal, you are agreeing to both work as a developer on one team, and also serve as customer to a different team, which is implementing your proposed software. As a customer, you will communicate with the team assigned to your project throughout the remainder of the semester, explaining your vision for the project, and giving feedback on the software they build.
Project Constraints
-
The project must be a database-driven web app that can be developed using Ruby on Rails.
-
The project must be suitably large to keep a 4-person team (give or take) busy for roughly 8 weeks. It is acceptable to have a core feature set in mind, and then add “bonus” features if the team finishes the core features early. In fact, if at any point, the team doesn’t have enough work to fill their schedules, it is the project customers responsibility to conceive of more features for them to implement.
-
The project must not require any special hardware (unless you are willing to provide it, and it does not create a workflow bottleneck).
Things to Keep in Mind
-
The team may not have time to complete all the requirements you come up with.
-
When the course ends, the team is under no obligation to continue working on the project.
-
You and the team will share joint ownership of the code produced.
What to Submit
To submit a proposal, fill out and submit the Markdown template below. Specifically, create a Markdown file (i.e., a text file with the file extension .md
), and paste in the template below. The name of the file must be the same as the project nickname that you specify in the template (e.g., if your project’s nickname is “Facebook”, then the file should be named Facebook.md
). In filling out the template, you must replace each of the xxx
bits with appropriate text, but leave all the other headings as they are. Here are the
-
Title: A title for your project proposal.
- Nickname: An acronym or short name for your project that follows the following constraints:
- 3-character min.
- 16-character max.
- Letters, numbers, and dashes only.
- No punctuation, special characters, or white space.
- May not start or end with a dash. No consecutive dashes.
- Description: A brief description of what your web app will be like and why it’s interesting.
- 150-word min. (See the VS Code Word Count extension.)
- Possible questions to answer here:
- What is the motivation for the web app?
- What are the goals of the web app?
- What important problem will the web app solve?
- What burning need do people have that the web app will fulfill?
- What form will the web app take to fulfill its goals?
- What sorts of features will the web app have?
- What are the selling points of the web app?
- What make this web app interesting/cool?
Important! Make sure that your proposal is totally anonymous. Do not include any identifying information in the text or even in the file name.
# Project Proposal
## Title
xxx
## Nickname
xxx
## Description
xxx
Once you have completed filling in your proposal text, you must use the Markdown PDF VS Code extension to create a “pretty” PDF, and it is this PDF that you will submit. Here is a video demo on how to use the extension.
The following is an example of a proposal that has followed the above instructions. The Markdown file is called Tic-Tac-Toe.md
, and here is a link to the PDF version, Tic-Tac-Toe.pdf
.
# Project Proposal
## Title
Tic-Tac-Toe: An Online Game of Xs and Os
## Nickname
Tic-Tac-Toe
## Description
The goal of this project will be to create an online tic-tac-toe game. Tic-tac-toe is a classic children's paper-and-pencil game. The following picture illustrates what a tic-tac-toe game board looks like:
![alt text](https://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Tic_tac_toe.svg/400px-Tic_tac_toe.svg.png "Example tic-tac-toe board.")
The game is played by two players. The game board is a 3x3 grid. The players take turns making marks on the board. One player makes Xs and one player makes Os. A player may make one mark per turn. The first player to make a row of 3 marks in the horizontal, vertical, or diagonal direction wins the game. For more details on the game of tic-tac-toe, see the [Wikipedia page](https://en.wikipedia.org/wiki/Tic-tac-toe).
People love the game of tic-tac-toe, and this app will enable them to play it online with opponents from all around the world. In addition to enabling playing the game, the app will record individual stats for each player, keeping track of, for example, a player's win/loss record and opponents played. It will award badges and ranks to players based on their historical data. The app will provide features for finding new opponents to play against. For example, it will help players search for other players at a similar level, and it will enable a player to invite other players to play right now or to schedule game times for later. During a game, players will be able to message each other in real time.
Because cases of misconduct can happen, players will have a way of reporting other players who violate the app's terms of use. Additionally, administrators will have the ability to disable the account of players who violate the rules.
A&B Points
-
Each submission that follows the above instructions and is of at least decent quality will earn 1 A&B point (maximum of one submission per person).
-
If your project is chosen to be built, you will receive a total of 3 additional A&B points—one per project iteration that you serve as customer. Of course, you must fulfill your duties as customer in order to earn these points.