COS-518 Semester Project
The semester-long project in COS-518 is an open-ended systems
research project. Project topics should be reached after discussion
with the class instructor. Projects should be done individually or
groups of two, with the approval of the instructor. Projects
must include significant system programming in either C or C++.
For group projects, both students are expected to share equally in the
implementation.
The project time-line is as follows:
- Proposal: Project proposals are due on 11/17. These
include a 3 page document, typeset like final paper, that include an
introduction/motivation for the work, a design sketch or challenges,
related work in the area, and implementation/evaluation plan.
- Proposal discussion: One-on-one meeting with instructor to
discuss projects during weeks of 11/16 or 11/23. Meetings to be
scheduled.
- Project status discussion: One-on-one meeting with
instructor to discuss projects during beginning of December. Meetings
to be scheduled.
- Final report: Project writeups are due 1/12 at 11:59pm EST
(both emailed .pdf and hardcopy). Project writeups should be 10 pages
of double-columned, single-spaced, eleven-point font. Papers
must be typeset in LaTeX. Use this skeleton framework for formatting and building
your paper.
Project Management
You should strongly consider using either
Subversion or
CVS
to perform source code control for your project and the paper
you write describing it. I suggest Subversion.
Writing Papers
Evaluation
If you need access to one or two computers for testing your system,
please contact us. For larger-scale tests, you should try out one of
the following testbeds:
Emulab
Emulab is a network emulation environment
at the University of Utah. It provides racks of machines and programmable
switches that can be configured to form mostly-arbitrary network topologies,
with controllable delay and loss between nodes. It's a great way to test
real programs in repeatable conditions or at scales that you can't get on
your own.
If you wish to use Emulab for your project, you should join our class emulab
project.
Planetlab
PlanetLab is a large-scale,
distributed collection of machines that can be used for experiments
and measurements, managed by a group based here at Princeton. It has around 600 nodes scattered over about 350 sites.
The machines run something linux-ish that you can login to and
run programs, and there exist a variety of utilities for automatically
distributing software to the nodes, running programs, and so on.
You must sign up to use a PlanetLab account. Please only sign up if
you're going to use the account, since it imposes some management
overhead on people not involved with the course.
Analysis
- Books: Raj Jain, the Art of Computer Systems Performance Analysis - a very good overview of lots of mathematical
techniques and queuing bits, aimed at a systems audience
Last updated: Tue Dec 15 20:46:52 -0500 2009