Final Project

Mr. Gottsacker
Computer Programming



The final project for this class will take place over several weeks, and via several stages. The entire process will emulate the Agile software development methodology. Each stage will have an accompanying review practice, through which students' peers and the instructor will provide feedback that should be addressed in the next development iteration.

The foundational project instructions are straightforward: students will build a piece of software that accomplishes some sort of nontrivial goal. On an individual project basis, we (the instructor and each student) will agree on how that should appear. A standard requirement will certainly be clean, well-structured, well-documented Java code.

There will be three deliverables spaced out over the last three weeks of the 2020 Spring semester. The third deliverable is the final version of the project. Each deliverable will have an accompanying review session with the instructor and another student. The review sessions will require each student to present his work toward the given deliverable. In a meeting, he must demonstrate his progress toward his goal, including:

Each student's review meeting will last seven minutes. Students must be professional and prepared for the review meetings. All meeting materials must be submitted and shared by 5:00 PM on the day before the meeting. Attendees must be on time. Attendees must actively contribute to the meeting and offer constructive feedback.

Deliverable review meetings will occur on the same day each week for the same pairs of students. Sign up for a day and time on this Google Sheet starting at 3:00 PM on Monday 04-20.

Review meetings will only have the required members. Anyone may attend Deliverable 3 presentations, as these are the final project presentations. All students must attend at least eight presentations in addition to their own.




Project timeline





Phase 0: Exploration & Ideation


Start thinking critically about the software you might want to construct. Think about the software you use everyday. Think about the programming concepts you have learned how to use this semester. How can you apply those in a novel way?

Some ideas:




Project Proposal: due Thursday 04-23


Complete this Google Doc with details about your project. You will not be able to edit it directly; instead, download it, fill it out, and upload it to the same folder where you upload assignments.

Your proposal will be graded on the following criteria:




Deliverable 1: due week of 04-27


Because of its temporal proximity to the project proposal submission, this deliverable will likely not hold as much coding progress as subsequent deliverables. There should, however, be clear evidence of a software development approach (top-down or bottom-up), and some progress made on the final version's foundational technical problems.

Materials to be submitted to instructor by 5:00 PM the day before the meeting:

Materials to be shared with instructor + peer:




Deliverable 2: due week of 05-04


This deliverable should possess a very real shape that closely resembles the project's final form. Most of the heavy development work should be done by this point. Ideally, there is mainly code clean-up and extra features added after this deliverable. All suggestions from the last deliverable review should be implemented.

Materials to be shared with instructor + peer by 5:00 PM the day before the meeting:




Deliverable 3: due week of 05-11


This is the final version of the project. All suggestions and feedback should be implemented. Projects should be polished and ready to display to peers in a five-minute presentation (+/- 1 minute), with two minutes for questions at the end (5 + 2 = 7 minutes total). Presentation talking points must include:

Materials to be submitted to instructor by 5:00 PM the day before the presentation:




Grading criteria

Deliverables

Review meetings




Project Example: Game

Tips on getting started

Write a text adventure game in Java.

Your game must include all of the following:

  1. A title.
  2. A plot.
  3. 6 stages, each with its own task or activity for the user. Each stage must have at least one user interaction (gathering input from user). The code for each stage must be in its own method.
  4. A character representing the user. The character must have:
    1. a name (can be user-entered)
    2. some kind of special ability that affects gameplay
  5. An instance of ASCII art.
  6. An element of luck and three elements of randomness that affect gameplay. This could be a randomly-generated number that affects the user's success overall, or for a specific task.
  7. A mathematical computation using a formula (something more complex than simple math).
  8. Some kind of matrix generated with a loop and according to some pattern.
  9. Some other looping element.