Homework 6 - Final Project Report
E6998 Spring 2009
UPDATED: 4/29/2009 at 12:15pm EST
DUE: 5/11/2009 at 12:00noon EST
E6998 Spring 2009 - Final Project Report
Submit the final project report for your respective course projects.
The report should be submitted via
Courseworks. There should
be three parts, a PDF document of approximately 10-15 pages describing your
project, a video of no more than 5 minutes demonstrating the final
status of your project, and an appendix to your report listing the
source code for your project with appropriate documentation and
comments. The video should show your project running on a real device
if available or an emulator otherwise. Please include a URL in your
report indicating where we can view the video demonstration.
The PDF document should include new material as well as updated
versions of everything you have already submitted in previous homework
assignments for your project. If there are things you wish you did
better in your previous submissions, here is a chance to fix them and
do them right. You may reuse or change as much material from your
previous submissions as you like. A suggested organization of the
report is to break it up into the following sections and make sure you
address the issues raised for each section:
-
Introduction: What is the problem you are trying to solve,
what is your solution, why is your solution a good one, and why would
users want to use it? What are the key aspects of your solution that
will distinguish it from other work that is out there? Why did you
choose iPhone or Android for your platform?
-
Related work: What have others done that is similar or related
to your project? What similar applications are there? Do not limit
your scope to just considering other applications on your platform,
but consider other platforms as well, be they PCs, Macs, game
machines, web applications, etc. What related applications are there?
Include citations for related work, which should include URLs if
available. The citations and URLs should appear in a list of
references at the end of the report.
-
Usage model: Describe how a user is going to use your system.
Think about this as like a user manual. Describe the system from a
user's perspective. For example, the user does not need to know the
guts of your system and how it works internally, but the user does
need to know what buttons to press to do various things. As part of
the model, you should describe your user interface design, including
an updated version of the the screen flow you submitted previously and
mockup or real screenshots of the various screens of your application.
Some of you should consider shrinking the dimensions of your
screenshots - remember that the real device will not be the size of an
8.5"x11" sheet of paper.
-
Architecture design: Present the detailed design of your
system. What key assumptions are you making about your system or the
environment in which it will be used? What justification do you have
for those assumptions being reasonable? What are the components, how
do they fit together and talk to one another? Which protocols or
platform features are you using? For example, are you using Bonjour
or OpenGL? Are you using a database for storing information local to
the phone? Are you using a remote server, and if so, which one? How
is functionality partitioned between the client and the server? If
you communicate with other devices or machines, how do you do so? Do
you use WiFi, and is it a computer-to-computer connection? What
programming interfaces are you using? What tools are you using?
-
Implementation: Which parts of your system are
implemented? How were they implemented? What tools did you use for
doing the implementation? Which libraries did you use? What parts of
your design were interesting from an implementation perspective?
-
Evaluation: What kind of testing have you done to validate
your system? Have you tested on a real device or the emulator or both?
What kind of performance measurements have you done? Can you present
them? What kind of optimizations did you do? If you are making any
important assumptions for your project, how have you validated that
those assumptions are correct? Did real users try the system? What
was their experience? If you are writing a game, do the graphics
update fast enough to be fun to play? If you are writing something
that involves GPS, are you locations accurate enough? If you are
using OCR, how well does it work in different lighting conditions?
What methods for performance tuning did you use?
-
Limitations: Describe any limitations with your design and
implementation of the system.
-
Member contributions: Describe the contributions made by each
team member to the project. Be specific and describe actual functions
implemented by each team member, as well as the number of lines of
code implemented by each team member.
-
Lessons learned: What did you learn? How would you do things
differently if you did the project again?
-
Conclusions and future work: Provide some concluding remarks
and directions for future work.
-
Acknowledgments: If you have received help from people outside
of your team, please acknowledge what contributions they have made.
-
References: Provide a list of references cited with complete
bibliographic information including URLs where available.
-
Code appendix: Provide a listing of the code for the project.
The best way to do this would be to include a few sample snippets as
an appendix to the report which you might reference as part of your
discussion on the implementation. Then, provide a complete listing of
the code as a compressed tar archive which is uploaded to courseworks
as part of your report.