The Final Project

To conclude our semester, you will embark on a final project with 3–5 of your peers and develop a final project for the course.

Requirements and Topics

In your project you will develop one or more Scheme programs to explore a topic related to your group’s interests. For example, you might consider:

  • Creating a collection of musical compositions around some theme that might be out of reach for a human to perform on their own.
  • Building a full-featured drum machine or synthesizer program.
  • Developing a hybrid human-computer performance piece, e.g., a musical composition with Scheme performing one of the parts, or even a dance or stage performance that incorporates Scheme programs in some way.
  • Exploring aspects of audio with computer programs, e.g., copyright, auditory illusions and effects, or “audibilizing” data.
  • Combining art in music in a novel manner, e.g., a visualization of a sound wave.
  • Create a complex animation that could contain user interactions.
  • Create a small-scale video game (text based or animations with sound).
  • And many more…

The possibilities are endless and really only limited by your imagination!

In terms of requirements, you will produce three major products:

  • A software artifact, i.e., one or more Scheme programs that accomplish your goals.
  • A short presentation of your work that you will deliver in the final week of the course.
  • An individual reflection on your work, to be turned in by the end of the semester.

Beyond these products, we do not have specific requirements about program size, using particular libraries, etc., so that different groups have flexibility in exploring their topics. Instead, we will be coaching you through the project milestones to add in sufficient complexity and depth, in particular, with the program that you develop, so that your final work demonstrates your knowledge of the core programming concepts of the course.

Project Milestones

To ensure that you are making appropriate progress on your final project, we will have several milestones, i.e., mini-deliverables for your group to produce. We will outline the details specifics of each deliverable in subsequent milestone deliverable write-ups.

  • Milestone #1 (due 11/06): identification of a topic for the project; an architectural outline of the program(s) you will need
  • Milestone #2 (due TBD): decomposition of the program outline into functions; a partially-completed program
  • Milestone #3 (due TBD): completed program and presentation

Final Deliverables

The final deliverables consist of three artifacts:

  1. One or more Scheme programs that address the problems you wish to solve. The programs should be complete and well-formatted according to the course style guides.
  2. A presentation no more than 10 minutes in length giving an overview of your work along with a demo or performance. You will produce a slide deck for this presentation and turn it in.
  3. A short reflection on your work describing the problem you solved, your specific contributions to the project, and a bug that you personally encountered in your project and how you fixed it. These reflections will be completed individually and will reflect each individual’s contribution to the overall project.

Final Reflection

Your final project grade will come primarily from your final reflection paper for the course. Note that the final reflection is an individual deliverable. You should work independently on your reflection so that the writing reflects your interpretation of your project. You should not collaborate with your group members on any part of this reflection!

Your final reflection should be a written paper meeting the following specifications:

  • At least two pages in length and no more than three pages in length.
  • 1” margins, 12 pt font, double-spaced.

In your reflection, you should:

  • Give a brief overview of your project in your own words: what did you build and why?
  • Give a brief overview of your project’s architecture: how did your group break down the problem into components?
  • Give a description of your contributions to the project: which components did you contribute code to and how much code did you contribute to each?
  • Give a description of a bug that you personally encountered during development and how you systematically solved the issue.

For this final point, you should answer the following questions in your description:

  • What did you initially observe that indicated a bug was present?
  • How did you fix the bug? This should described as a repetition of these two steps until a solution was found:
    • What steps did you take to understand and diagnose the issue?
    • What did you do to fix the bug? Did it succeed?
  • In hindsight, what should you have done to avoid introducing the bug in the first place?

To answer this question, you should choose a bug of substantial breadth and difficulty that you required multiple attempts of the “diagnose/fix” cycle to address the bug. Such bugs are most likely logic errors, i.e., bugs that arise because your strategy to solve a problem was wrong, not because of an incorrect usage of code.

Grading

The course project will be graded on our EMRN scale according to the following criteria:

  • Excellent:
    • Project code is high quality both in terms of functionality (i.e., the code accomplishes the task at hand) and style.
    • Project presentation covers all of the required points, involves everyone in the group, and stays within time budget.
    • Personal reflection is high quality, covering all required points and is evident of reflection on the software development process.
  • Meets expectations:
    • Project code is functional (i.e., the code accomplishes the task at hand) but may have some bugs or substantial style issues due to lack of revision.
    • Project presentation covers all of the required points.
    • Personal reflection covers all the required points but does not discuss them at sufficient depth.
  • Requires revision:
    • Project code has significant bugs and/or serious style issues.
    • Project presentation only covers some of the required points.
    • Personal reflection is missing one or more points.
  • Not complete:
    • One or more of the deliverables are missing or incomplete.

Self-Checks

Problem: Group Preferences (‡)

As discussed in the project write-up, we will match you up with 3–4 of your peers in a semi-random fashion. Since this is a long-form project spanning the remainder of the semester, we want to respect any preferences that you have in terms of who you want to work with.

For today’s self-check, list the set of peers that:

  • You would prefer to work with on the final project.
  • You would prefer not to work with on the final project.

Also, please list any particular topics that you are interested in exploring for the final project. Broad ideas are fine, e.g., “live musical performance” or “sound synthesis.”

In matching people, we will do our best to respect your preferences, but be aware that we will employ randomness to some degree to ensure fairness in our selection.