Project Requirements

All teams must be composed of two members. You can do one of the following:

Design Specification - due April 14th

You should first decide what problem you are going to solve, and then you should create a design specification that includes the following items: A list of project ideas can be found here. Your design specification should be no longer than 4 pages.

Implementation - due May 11th

Implement the project!
Mini demos: approximately May 11th and 12th
Note there is no "turn-in" component for this part.

Testing and Characterization Specification - due May 17th

You should create a testing specification detailing how you will test your code, and motivation for why these are conclusive tests. These tests should be automated and repeatable, and should include tests to ensure your program is operating correctly. You will also need to characterize and evaluate your project. Characterization and evaluation includes documenting the project metrics - i.e. how well does your algorithm perform, what are the specific performance characteristics such as throughput, delay, etc. The specification you turn in should be no longer than 3 pages, and should include the following items:

Testing/Debugging Phase - due June 2nd

Implement the tests and collect the metrics you detailed in your Testing and Characterization Specification.

In-Class Project Demos - June 5th and 7th

You will need to demonstrate your project to the class. You should have a working prototype, and a 10 minute presentation of your project.
Demos for the TA: approximately June 8th and 9th

Final reports - due June 12th

Your report should be a technical description of your system, and should follow the guidelines below. For good examples of mobile systems papers, see recent proceedings from MobiCom and MobiSys.

The report should be no more than 8 pages and should cover these points:

Motivation
What problem are you trying to solve? Why is your project going to change the world? Why and how would someone use your system? Give a specific scenario. State your assumptions.
Related work
Briefly describe other attempts to solve the problem, or similar problems. How does your system improve on these attempts?
Design and implementation
Discuss in detail your approach for solving the problem: external design (how your system interacts with other components), user interface, internal design (the various pieces that comprise your system). Expand on the scenario from the motivation section. Explain any interesting design tradeoffs. Are there any reusable parts that could be packaged as a library for other programmers? You should also indicate any significant ways that your finished product differs from what was included in the design specification, and why those changes had to be made.
Testing and Characterization
Discuss how you tested your approach and why these are conclusive tests. Include a characterization of the performance of your project, including any helpful graphs. In addition to including your results, you should also explain your results. Why did you obtain those results? Why does your system result in the performance metrics you obtained? You should be especially sure to explain any abnormalities or unexpected results in your data.
Lessons learned
References