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.
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).
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.
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 instructions for each field in the template:
Title: A title for your project proposal.
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.
The course instructors will review all proposals and select the ones that are deemed to be the strongest across four key criteria:
Best fit technically for the course. Projects that would require the skills that students in the course have prepared for will be preferred. Projects that go too far beyond those skills tend to cause a technical bottleneck and don’t work well as a course project. For example, a search-engine project that includes a web crawler wouldn’t make a good project for this course, because creating a web crawler requires substantial technical skills beyond the ones covered.
Greatest potential for utility or enjoyment. Projects that seem like they would be the most useful or the most enjoyable for their target audience will be preferred.
Most well conceived. Often, a project proposal sounds OK at first, but the more we think about it, the less sense it makes or the less clear we are about what the app will actually be like. The idea for a project should be well thought out such that, from the proposal, it is reasonably easy to imagine what the app will be like, and its features make sense with respect to its goals.
Most original. Some types of project proposals we see over and over. For example, we get tons of proposals for movie and music review apps, and we’re pretty tired of them at this point. A good way to come up with an original idea is to focus the app on the needs of a small, highly specific user or group of users. For example, you might propose an app for a local organization or business. The specific and detailed needs of such users will tend to lead to a highly original app.
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.