The reading assignments of the course expose you, the reader, to influential ideas in the design space of operating systems and help you learn to critique them. The other main component of the course is an open project that gives you the chance to switch roles to be the author: you propose an idea related to systems in general, motivate it, implement a prototype system that demonstrates its efficacy through experiments, and then write up a formal report that can convince others that it is a good idea. The project can be done in group of two students (or three if the amount of work is substantial). Please use the USENIX conference paper template to format your report.


The best outcome for a project that is well done is that it can eventually be suitable for publication at some major systems conference. The minimum expectation for the project is that it should at least be interesting: it could be directly motivated to tackle an existing important real-world problem, e.g., system misbehavior in cloud environment, it could be trying to measure and improve an existing system, especially ones that are discussed in class, or it could be some crazy idea that nobody believes will work (initially). In other words, even if the project may not yield a real publication, it should at least have some intellectual depth and research flavor that readers can learn something.


I will provide some suggested topics. But you are encouraged to come up with your own. You can also propose project that involves your current research with my permission. I will meet with you several times during the semester to help you refine the project.

Deliverable #1: Proposal

In the proposal, briefly describe the following elements:

  • what is the problem you plan to tackle
  • why the problem is important or interesting
  • what has been done about this problem
  • why the current solution is insufficient
  • what you plan to propose
  • what are the objectives/expected outcomes
  • what are the potential challenges
  • what is the timeline to execute your project

The proposal should be around 2 pages and include your group member’s name and email. The proposal only needs to be submitted by one of the group members.

Deliverable #2: Checkpoint Report

In the middle of the semester, submit a checkpoint report (around 3 pages) to describe the status of your project, the solution you have build so far, some initial results, new challenges that arise but did not anticipate, any adjustments to your approach or plan.

Deliverable #3: Final Report

The final report should look like a research paper. It motivates the importance of the problem you are tackling, potentially with some concrete evidence or data points, and why existing solutions do not solve the problem well. Then describes what are you proposal, what challenges you need to address, how do you address them, why your idea is better, what are your system design and implementation. Then shows the experiment results, interpret the results, describe the observations and implications, conclude whether or how the results demonstrate your solutions’ superiority over state-of-the-art solution. Lastly, include a brief related work section to compare and contrast with your solution.

There are no hard restrictions on the page limit on the final report because papers do not need to be long to be good. But your final report must comprehensively cover all the points mentioned above. The rule of thumbs is that when it does so, the report is around 6 to 10 pages.

Deliverable #4: In-Class Presentation

Each project team will be given a slot to do a presentation in class to show the cool ideas and results to other students. A live demo of the system you developed would be a nice element of the presentation.

Deliverable #5: Source Code

You will be required to turn in your source code and any documentation so that we can inspect it.