Project proposal instructions

538B Distributed Systems Abstractions: Project proposals

Fall 2020

A project proposal details the problem, your proposed approach/solution, and a realistic timeline for your team. The proposal must include at least the following sections: introduction/motivation, background, proposed approach/solution, evaluation methodology, timeline.

Detailed instructions.

  • The timeline must include dates and milestones/deliverables. It must be sufficiently refined to include milestones that are specific to your project. Do not simply list the deadlines for the course without listing the internal project deadlines. The timeline is there to get you to think about your time and to loosely commit to a schedule.
  • This is a distributed systems course, so make sure that your proposal is focused on issues/challenges/objectives relevant to this topic. A particular focus should be paid to the notion of abstractions: which ones will you be using, developing, and how will you evaluate their abstraction qualities.
  • If you are proposing a distributed system for your project, then the bulk of a proposal must be dedicated to design: what will your system look like, what properties will it have, what features will it include/omit, how will clients interact with your system, etc. This section is more critical than related work, or introduction/motivation. Writing this section well is difficult; spend the time to do a good job on it.
  • If you are proposing a measurement study, then your proposal must be focused on scientific details, such as your hypothesis, how you will collect data, and what analysis methodologies you are planning to use. This section must be detailed and well thought out; spend the time to think about threats to validity and alternative approaches so that you can better argue for your approach.
  • It is important to omit content that is irrelevant to your proposal. Before including text, consider whether or not it plays a purpose in explaining your proposed system/study and its objectives. If not, then it can probably be cut.
  • Consider giving your project/system a name. This way you can easily refer to it in your proposal.
  • Your project can re-use external code/algorithms/ideas that you find online (e.g., open-sourced Paxos Go implementations). Leverage prior work and build on it to avoid re-inventing the wheel and to get to interesting ideas quicker (e.g., implementing Paxos is itself a complete project).
  • A few proposals include highly specialized content. Make sure to define non-standard/specialized terms, include examples, and intuition -- anything to help get your ideas across. This work will pay off in the long term: (1) it will get you thinking more deeply about your work, and (2) you can re-use it in the project write-up and project presentation.
  • Make sure there is logical flow to your proposal. Define terms before you use them, motivate particular perspectives before launching into details, discuss prior work necessary to understand your proposal before you rely on it for your descriptions. Your proposal has to be self-sufficient, with citations to back-up your arguments. However, do not rely on related work to explain concepts that are critical to your proposal.
  • Consider including info-graphics/figures to explain your design. Sometimes it is easier to explain a complex idea with a picture. Likewise, don't hesitate to include formalism/math to explain your ideas (though, be careful with including formalism for formalism sake -- make sure it helps to explain rather than confuse the topic).
  • A well thought-out and detailed proposal will only benefit your group in the long run -- you will have a more clear idea of what you are really working on!