Your semester project must involve the construction, quantitative evaluation, and scholarly exposition of some aspect of an operating system. The term "operating system" may be interpreted broadly to include any kind of management software, including conventional kernels, virtual machines, run-time libraries, distributed systems, etc. You may use whatever languages and tools are appropriate for the task. You may carry out a project that has never been done before, or you may repeat an old idea (e.g. a filesystem usage study), as long as you do everything from scratch, and clearly compare your results to what has come before.
Consider the audience for your proposal to be fellow students that are smart and capable but are not taking this particular class and may not have read exactly the papers that we have. The one-paragraph project idea is simply a starting point for an idea. You should re-cast the project in your own words, elaborating upon and modifying the motivation and technical solution as you see fit. The proposal should be about three pages long.
Your proposal should have the following sections:
Abstract. The abstract should summarize the entire project in one paragraph. Follow the simple formula we have discussed in class: state a problem, the general solution technique, the expected complications, the solution to those complications, and the nature of the evaluation that you will conduct. (It's usually easiest to write the abstract after you have finished everything else.)
Introduction. Begin by describing the big picture, describing the context that you are working in. Even if you are researching something that has been discussed in class, you must give a short introduction to the topic in your own words. Describe how this system or idea is used (or could be used) by real people. Give a short example of why this topic is difficult or interesting. Briefly state the problem that you wish to solve.
For example, if you are working on the performance of virtual machines, then you should begin by describing what a virtual machine is, how it works, and what it might be used for. Then, write a compact, precise statement of the problem to be solved, such as: Virtual machines impose a high penalty on I/O. In this project, we will improve the I/O performance of the XYZ virtual machine monitor.
Related Work. Using your annotated bibliography as a starting point, discuss the related papers that is most relevant to what you are doing. If what you are proposing as been done before, state so plainly, and clearly indicate a few papers, If you are doing something completely new, then pick out a few papers that are in the same general area, and explain how your work is different or better.
Proposed Work. Once you have laid out the background, describe exactly what you intend to accomplish. What will you build? What will you demonstrate? What machinery and software will you require? Where and how will you get such resources? What complications do you expect to encounter? Clearly state how your proposed work will address the problem stated in the introduction.
If you will be constructing a system out of existing software, then include a diagram that shows how the various parts connect to each other. If you will be creating a large piece of software, then sketch the various modules and how they fit together.
Evaluation. Next, you must give a very specific statement of what quantitative evaluation you will perform in order to evaluate your work. Will you demonstrate that one system is more scalable than another? Will you demonstrate that one system performs better than another? Are you expecting a certain result?
If you expect that your final paper will have some graphs (and it should), then put in two or three draft graphs. Of course, they won't contain any data, but decide on the axes, the units, and the nature of the experiments that will produce the graphs. If you have a hypothesis as to what the data will look like, then sketch in a curve with a pencil.
Be sure to explain carefully how your results will support your evaluation goals. For example, if you are going to evaluate the scalability of a system, then you should be very sure to have a graph with the system size on the X axis and a performance metric on the Y axis.
Timeline. Give a timeline indicating what each group member will accomplish each week until the final paper is due. Make sure that you will have some working prototype ready to demonstrate at the midterm progress report. It might also be wise to leave a week empty as "catch up" time during some point of the semester.
The timeline is not set in stone: in any research effort, it is expected that the goals and schedule will change a little as work proceeds. However, if you are slipping from your timeline in any serious way, then you need to meet with the instructor in order to adjust your schedule and get back on track.