[ Home | Lab | New Students | Courses | Research | Publications | Activities ]

Project Rubric

This is a generic description of what I expect from a semester-long project, which I require in some of my courses. The details may change over time, so please visit the online version again. The specific topics to be considered in this project are described in a companion document listing the main topics, which should be available from the course home page.


In doing your project, you will need to make additional assumptions as well as identify any potential inconsistencies in the specifications, and resolve such inconsistencies. Any reasonable assumptions are fine, but they must be documented in your reports. You can consult with the TA or instructor if necessary.

Implementation Plan

How you envision you will carry out the following steps.

  1. Understand and motivate the problem you are addressing.
  2. Describe some scenarios on paper to a moderate level of detail. Make sure that the scenarios are sufficiently interesting and complete.
  3. Propose an approach to solve your problem.
  4. Describe how your proposed approach would handle the above scenarios; flesh out the scenarios as necessary; these become the requirements for your approach.
  5. Implement a throwaway prototype for your approach demonstrating how it would handle the above scenarios.
  6. Create a specification for your approach—not necessarily complete but describing the key points.
  7. Implement this more solid prototype. Test it with respect to the above scenarios.
  8. Think about the intellectual contribution of your effort. What can we do with it that we couldn't without? More importantly, what do we learn from the exercise? How would we evaluate the contribution of this work—in terms of its usability, its expressive, or what?

Deliverables (Reports, Presentations, Demos)

The project calls for the following tasks. Brevity is a good thing—hence the word limits for several of the writing tasks. In a single-space format, a page is about 400 words.

  1. Project report #0 (200 points)
    1. (100 points) Describe your approach at a high level, concisely and clearly. Describe the overall problem you address, explain why it is a problem, why a trivial solution won't work, and motivate your proposed approach. One page.
    2. (100 points) Describe the intended usage of your proposed module. Will a programmer apply it in building another solution? Will an end user take advantage of your module directly? In either case, give us a closer look at how your module will be applied. One page.
  2. Project report #1 (300 points)
    1. (200 points) Submit revised versions of the previous report—you will earn credit on the your previous work as well as any improvements you make.
    2. (100 points) Sketch the interfaces or protocols required for your module. These could be interrelated forms in the case of a GUI. Most of the time, however, these would be specifications of the interactions that your module will support. Think of these as requirements for your proposed module.
  3. Class presentation #1 (if needed for a given course; points included in report #1)
    1. Describe your problem, background, intended usage, technical approach. (Include the main points from project report #1).
  4. Discussions with instructor or TA over several meetings (no points)
    1. Demonstrate a throwaway prototype of your module in which many of the functions may be stubbed out, but the usage scenario looks kind of realistic. Include a few screen-shots or scenarios in report.
    2. Give a specification of your module. This will be more detailed than the requirements and will potentially describe about design objects. But don't go overboard on the details.
  5. Project report #2 (500 points)
    1. (Bonus points) Revised versions of the previous report—you will earn credit on the improvements, up to half the points deducted in the previous report. Please highlight the improved parts.
    2. (200 points) Describe the interesting technical challenges and trade-offs encountered during your project. What are the failure modes for your approach?
    3. (200 points) Explain key aspects of your design along with your rationales. Explain the organization of your team, e.g., who played what functional role. One to two pages.
    4. (100 points) Describe the scientific and engineering contributions of your effort, i.e., what do we learn from it beyond the fact that you got it to work? Explain some extensions to your approach and how the present design will accommodate them. One page.
  6. Class presentation #2 (if needed for a given course; 200 points)
    1. Describe more specific aspects of your problem and technical approach.
    2. (200 points) Demonstrate a solid prototype of your module in which the key functions are implemented. Whether it is a tool meant for programmers or for end users, show how it would be put to use. Include a few screen-shots or scenarios in report #2.


The project is recommended to be a team effort, each team consisting ideally of three or four students (depending on the course). Please choose your project partners by the official drop date. There is no extra credit for forming a team of fewer students, but such teams are allowed.

Organize the team so that there are clear responsibilities and functional roles.


The project will be graded according to the points specified above. In general, presentations (including demos) and other discussions during class will have a lot of influence, perhaps more so than the reports. I expect the reports to be in grammatical English and carefully proof read. I don't much care for fancy fonts and glitter.