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.
How you envision you will carry out the following
- Understand and motivate the problem you are addressing.
- Describe some scenarios on paper to a moderate level of detail.
Make sure that the scenarios are sufficiently interesting and
- Propose an approach to solve your problem.
- 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 throwaway 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
- 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 #0 (200 points)
- (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.
- (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.
- Project report #1 (300 points)
- (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.
- (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.
- 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 or TA over several meetings (no
- 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.
- 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.
- Project report #2 (500 points)
- (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.
- (200 points) Describe the interesting technical challenges and
trade-offs encountered during your project. What are the failure
modes for your approach?
- (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
- Class presentation #2 (if needed for a given course; 200 points)
- Describe more specific aspects of your problem and technical
- (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
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.
- Your demos should be runnable on university computers (check with
the TA) or you should be able to bring in your computers to campus to
demonstrate your work.