Programming project

Policy

Programming project can be done individually or collaboratively (by two students). A list of sample topics can be given (talk to me for details). Or you can propose a project idea by your own (refer to [here] for open-source cloudy software). The only requriement for proposed project is that you need to do programming in some part to implement the proposed idea.

Project related dicussion is on [Piazza]!

Timeline

Project proposal (Jan. 30)

Submit a one-page report, summarizing the context, movitation and goal of the proposed project.

Mid-term report (Feb. 27)

Do a presentation, talk about your mid-term design of your project.

Write a four-page report, (scroll down to see the writing format). In the report, you should include everything but implementation, including:

  • Introduction and motivation
  • Specific problem statement
  • Proposed approach
  • System design and implementation plan

submit your report through Blackboard.

Final demo (April. 17)

Show the working of your project.

Final report (May. 1)

Formal writeup about everything you did in your project. The final report should be at least 8 page long. You must include all three things below in your final report.

  1. All source code, and needed external library.
  2. README file to reproduce your final demo.
  3. A table with all information below.
Name Value
Number of codelines (implemented by you)
Scale of performance study (number of nodes, data size)
External review

Writing format

  • Papers must be written in LaTeX. The expected length is 4 pages (for mid-term report) and 8 pages (for final report), both EXCLUDING references.
  • The paper format should be typeset in two-column format in 10-point type on 12-point (single-spaced) leading, with the text block being no more than 6.5" wide by 9" deep. If you wish, you may use the USENIX LaTeX templates and style files [link] (Don't use the Word template!).

Resources

If you need no more than 3 servers (per student), ask me about the virtual machine resources here in the CST building.

If you need more than 10 servers, ask me about the Emulab. Emulab, provided by the University of Utah, is an emulation environment for distributed systems (typically at the scale of less than 100 nodes). We have a project on Emulab, through which you can typically get 30- 50 physical machines for realistic system deployment and performance evaluation.