As you know, this course requires you to complete a final project that
will determine 20% of your grade. You may choose your own topic
related to operating systems to study in more detail than we have as a
class. Most projects will involve programming, but the amount and
difficulty may vary from topic to topic. A formal research paper and
brief (approximately 20 minute) presentation at a minisymposium to be
held during the final exam period.

You may work individually or in groups of two or three. Groups must
be formed by Wednesday, April 7, 2010.

The proposal

Please start thinking about a topic right away and come to me with
your ideas. By 2:40 PM, Monday, April 12, 2010, submit a proposal, at most one page in
length, that describes your topic, what specifically you plan to
investigate about your topic, and how you plan to go about it.
Describe the major milestones for your project, a rough schedule for
achieving these milestones, and which milestones you believe are most
important for your project to be considered a success. If you will
need access to any special hardware or software, include that in your
proposal. Your proposal should convince me that you have an
interesting and worthwhile topic and that it is feasible in the time
available.

The progress report

By 2:40 PM, Monday, April 26, 2010, submit a progress report. This should consist of a
detailed outline (or better yet, an early draft) of your paper
including sources, and a description of the design and current
implementation status of your software, as well as a more specific
timetable for completion of the project.

The paper

This is to be a formal research paper, and should be organized as
such. You should begin with a title, author list, and abstract. The
main body of the paper should be organized into sections including
(i) an introduction in which you describe the general topic and the
particular aspects you will be examining, (ii) one or more sections
comprising your main text, where you describe what you have done, how
you have done it, and what you have learned, (iii) a conclusion,
which should include ideas for future investigation into your topic
which were beyond the scope of your project and the paper, and (iv)
a complete list of citations. Citations of web pages are acceptable
in some circumstances, but books, articles in conference proceedings
or journals, or technical reports are preferred.

Proper English and a good technical writing style are important.
Writing well is very difficult - it is an iterative process and
cannot be done all at once. Be precise and be concise. Group members
should proofread and make suggestions about each other's writing.
Check your spelling and grammar carefully. I expect most papers will
be around 15 single-sided pages, using 1.5 spacing, one inch margins,
and a 12-point Times Roman font (or similar). Please
do not adjust margins and font sizes to force a certain length. You
are encouraged but not required to use LaTeX to typeset your paper.
The LaTeX example in my shared area is already set up with an
appropriate format. Length is not important - content and quality
are. Papers shorter than 10 pages or longer than 20 pages are
acceptable, if the length is appropriate for the content.

Submit a complete draft by 2:40 PM, Wednesday, May 5, 2010. The more complete this draft,
the better feedback I can give you to improve it and the more you can
focus on programming at the end. You may also submit additional
drafts for feedback, but keep in mind that it may take me a day or two
to get to them. Submit your final version by 4:00 PM, Tuesday, May 11, 2010.

The project

You should submit your source code and instructions on how to build
and run it. The software should be described in the paper. Please
make arrangements to demonstrate the program. Source code should be
submitted and demonstrations completed by 4:00 PM, Tuesday, May 11, 2010.

The presentation

Each group will present a summary of their work to the class. Include
background information on your topic, the motivation for your project,
a description of what you did, and a summary of what you learned.
Software demonstrations may also be appropriate. Prepare slides or
web pages. Rehearse your presentation, paying special attention to
timing. Given how busy everyone will be at the end of the semester,
our schedule will be tight, so groups will not be allowed to run over
the allotted time. Presentations will take place during a class
minisymposium on Friday, May 7, 2010. All group members must
participate in the presentation. Attendance is required at the entire
presentation session, not just when your group is speaking.

Grading

This final project accounts for 20% of the course grade. The grade
will be based on all aspects of the project, including the proposal
(5%), the progress report (5%), the design, documentation, style,
and correctness of the software developed (10-30%), the content and
writing style of the complete draft (15%) and final version
(30-50%) of the paper, and quality of the presentation (15%). The
breakdown between software development and the final paper will depend
on the amount of programming required for each project. No credit is
given for attendance at the minisymposium, but penalties will be
applied for missing all or part of it.

Emulators or virtual machines - build your own or enhance an
existing one. This could include things like the Java virtual
machine, emulators for older hardware, or operating system
virtualization with tools such as Xen or VMWare.

Operating system issues arising in current and near-future
hardware (e.g., chips with many CPU cores).

Protection and security issues, encryption.

Distributed operating systems.

File sharing over wide-area networks.

OS issues in Grid computing, internet computing.

Theoretical issues in OS, such as queueing theory.

These are just ideas, and you should not restrict yourself to this
list. I hope everyone can find an appropriate topic that they find
interesting. You might also find it useful to browse recent journals
and conferences proceedings to get a feel for some current research
projects in operating systems.

We may be able to provide a dedicated lab computer to each of a few
groups who wish to pursue a project that requires administrative
access. If you think you may be interested in this, be sure to stake
your claim right away.

Honor Code Guidelines

Collaboration within a group is unrestricted. Since each group is
working on a different project, you are free to discuss your projects
with each other. If you wish to use or refer to any software
libraries or outside source code beyond the standard language (C, C++,
Java) libraries, check with me first. All sources must be cited
properly. If in doubt about anything related to Honor Code, ask now
and avoid problems later!

Final Thoughts

You have several weeks, so the expectation is for several weeks of work. You
will not be able to do a good job if you put it off. I don't expect a
Ph.D. thesis, but I do expect much more than your average lab
assignment.