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.
Assumptions
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
The way this project is envisioned you will carry out the following
steps.
- Understand the problem.
- Describe some scenarios on paper to a moderate level of detail.
Make sure that the scenarios are sufficiently interesting and
complete.
- Come up with an approach.
- Describe how your proposed approach would handle the above
scenarios; flesh out the scenarios as necessary; these become the
requirements for your approach.
- Implement a throw away prototype for your approach demonstrating
how it would handle the above scenarios.
- Create a specification for your approach - not necessarily
complete but describing the key points.
- Implement this more solid prototype. Test it with respect to the
above scenarios.
- 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.
- Project report #1 (300 points)
- (100 points) Describe your system 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.
- (100 points) Describe the intended usage of your system. Will a
programmer apply your system in building a larger system or
application? Will an end user take advantage of your system? In
either case, give us a closer look at how your system will be applied.
One page.
- (100 points) Sketch the interfaces or protocols required for your
system. 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 system will support. Think of these as
requirements for your system.
- Class presentation #1 (if needed for a given course; points
included in report #1)
- Describe your problem, background, intended usage, technical
approach. (Include the main points from project report #1).
- Discussions with instructor over several meetings (no points)
- Demonstrate a throw-away prototype of your system 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.
- Give a specification of your system. This will be more detailed
than the requirements and will potentially describe about design
objects. But don't go overboard on the details.
- Project report #2 (500 points)
- Submit revised versions of the previous report - you will get
credit on the improvements, scaled by 50%. Please highlight the
improved parts.
- (200 points) Describe the interesting technical challenges and
trade-offs encountered during your project. What are the failure
modes for your system?
- (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.
- (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.
- Class presentation #2 (if needed for a given course; 200 points)
- Describe more specific aspects of your problem and technical
approach.
- (200 points) Demonstrate a solid prototype of your system in
which the key functions are implemented. Whether it is a tool meant
for programmers or end-users, show how it would be put to use.
Include a few screen-shots or scenarios in report #2.
Organization
The project is recommended to be a team effort, each team
consisting ideally of 4 students. Please choose your project partners
by the drop date. There is no extra credit for forming a team of
fewer than 4 people, but such teams are allowed.
Organize the team so that there are clear responsibilities and
functional roles.
Grading
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.
FAQ
- Your demos should be runnable on university computers (check with
the TA) or you should be able to bring in your computers to
class.