CSE 40771 Engineering Project

For the second project of the semester, you will take off your scientific hat, put on your engineer's hat, and build something that works. A selection of project ideas can be found here. We have discussed many project ideas during class, and many have you have already started building your system. If you haven't decided what to work on, talk to Prof. Thain right away!

As an engineer, it is not enough to simply make something work, but you must also be able to explain its operation to others, and be able to discuss the tradeoffs and ramifications of your work. Consequently, your project will have several milestones and reports:

  • One Page Plan. On Monday, March 19th, you will turn in a one page plan that lays out what you intend to accomplish. You should briefly describe what you intend to build, what initial work you have already accomplished, what tools and resources you will need to build it, how you will evaluate what you have created, and how long each step will take. Then, during that week, schedule a meeting with the instructor to make sure that you are on track.

  • Demo Session. During the week of April 2nd, you will make an appointment with the instructor to demonstrate that you project is well on its way to working. It doesn't need to be perfect: it doesn't have to be easy to install, have a beautiful interface, or have all the necessary features yet, but it must have the basic functionality present, so that you can be sure of completing within the remaining time. Be prepared to explain how the system works, and be ready to discuss any changes to your initial plan.

  • Project Talk. During the final two weeks of class, you will give a 25 minute lecture to the class on what you have implemented, accompanied by video slides and possibly a demo, if appropriate. At this point, your project should be basically complete, minus a few last details.

  • Project Paper. On May 2nd, you will turn in a final paper describing your project. Also, email to the instructor a tarball of what you have created, along with some instructions on how to build and run it.
  • Both the project talk and paper should follow an outline similar to the case study talks the graduate students have been presenting in class:
  • Problem: What is the overall problem that is being solved? What need does the user have that your work is addressing?
  • General Solution: What is the general philosophy of the system you have created? Are there any constraints on how it must be designed or operated?
  • Architecture: Describe the detailed structure of the system, carefully indicating all of the major components and how they interact.
  • Examples: Describe in detail how the system operates in the common cases. Carefully indicate step-by-step what messages are exchanged and what interactions take place.
  • Hard Cases: Every system has a few "hard cases" that must deal with failures, contention, and other unexpected problems. Pick one or two hard cases and describe precisely how they are handled.
  • Evaluation: Find a way to evaluate your work quantitatively. Depending on the system, it may be appropriate to measure performance, scalability, reliability, or accuracy. Measure whether your creation meets the requirements set out at the beginning. Talk with the instructor if you aren't sure what to measure.
  • Conclusion: Restate the problem, the solution method, and the results. Oftentimes, after describing your work in detail, you can make a more precise or more thoughtful explanation of what you have accomplished.