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:

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


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 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 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.


Last updated: Tue Dec 15 20:46:52 -0500 2009