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:

  1. 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?

  2. 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.

  3. 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.

  4. 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?

  5. 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?

  6. 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?

  7. Limitations: Describe any limitations with your design and implementation of the system.

  8. 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.

  9. Lessons learned: What did you learn? How would you do things differently if you did the project again?

  10. Conclusions and future work: Provide some concluding remarks and directions for future work.

  11. Acknowledgments: If you have received help from people outside of your team, please acknowledge what contributions they have made.

  12. References: Provide a list of references cited with complete bibliographic information including URLs where available.

  13. 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.