15-712 Semester Project

We prefer that projects are done in groups of three, although groups of two may be permitted with the permission of the instructor. If you are looking for a partner, you can use 15-712 Piazza.

Prior Project Examples

Some prior 712 class projects are described in the following techreports: CS-CMU-05-138, CS-CMU-05-201. Another good resource to look at is An Evaluation of the Ninth SOSP Submissions, or How (and How Not) to Write a Good Systems Paper (by R. Levin and D. Redell, in Operating Systems Review, vol. 17, no. 3, July 1983, pp. 35-40) -- see the link below.

Here are the titles of recent 712 class projects (now including 2020 projects). Click on the link to see the first page of the final report.

Project Discussions with Course Staff

As noted in the syllabus, we will be offering several days during which each project team meets with Phil and Jack to discuss progress, brainstorm, etc. All meetings will be held via Zoom.

The first of these is March 12. Each project team should sign up for a 30 minute slot at a link to be posted.

The second of these will be April 2. Each project team should sign up for a 30 minute slot at a link to be posted.

The final of these will be April 23. Each project team should sign up for a 30 minute slot at a link to be posted.


Due 3/17. The project proposal should be 3 pages; single spaced, one or two columns, 10 point font or larger.
Describe the project idea/application, how it relates to the course material, what work must be done (suggesting how it can be partitioned among you) and what resources you will need (including software systems you already have access to). Concentrate on convincing us that it will pertain to the course, that you will be able to complete it, and that we will be able to evaluate it. The third page should be dedicated to providing an outline of your intended final paper, identifying the specific experiments to be run and what questions they will answer.

In your proposal, provide three types of goals: 75% goals, 100% goals, and 125% goals. Think of these as the equivalent of a B grade, an A grade, and a "wow!" grade. The goals can be dependent or independent of the prior goals.

Example project proposals: Example-1, Example-2.

Think also about providing answers to the Heilmeier Questions in your proposal, as appropriate.

Interim Project Report and Literature Survey

Due 4/7. The interim project report should contain:

Feel free to include additional material in your interim report: If you wish to include, e.g., your design section or preliminary results, we will give you feedback to help ensure that your final report is great.

Final Project Presentation and Report

Due 5/10 and 5/11 (presentation) and 5/13 (report). Final project presentations will be 5/10 and 5/11, and given via Zoom.

Presentations will be done as 90 minute "conference" sessions of three project teams each. Each team will present in one of the 30 minute slots and serve as inquisitive audience members for the other two slots of the session. The idea is to make the presentations more lively for the speakers and to simulate the Q&A of a conference presentation.

Each project team should sign up for a 90 minute conference session at a link to be posted. Three teams per session.

We will order the talks within a session closer to the start of the session. You are expected to attend the entire 90 minutes, pay attention and ask questions at the end. Each team should prepare a 20 minute talk, followed by 10 minutes of Q&A. The talk should be along the lines of a conference talk for your work, e.g., with the following parts:

The final report will be due by 11:59 pm on 5/13. It should be in the format of a research paper on your project, covering the same parts, with further details especially on related work (the literature survey from the Interim Report).

In addition to the report, please submit a tar file of your source code to Canvas.

Project Management

You should strongly consider using either Subversion or Git to perform source code control for your project and the paper you write describing it.

I also strongly suggest writing your course project report using LaTeX. It is the de-facto tool in which most CS research papers are written. While it has a bit of start up cost, it's much easier to collaboratively write complex research papers using LaTeX than Word.

Writing Papers


The most popular network simulators are ns-2 and Opnet. ns-2 is free, and CSD has some licenses for Opnet.

Testbeds and Emulation


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.

Emulab also provides a set of wireless nodes that you can control, located around their building. They also have an experimental mobile robot testbed that could make for fun projects (the robots are designed to move computers and radios around so that you can do repeatable experiments involving mobility).


PlanetLab is a large-scale, distributed collection of machines that can be used for experiments and measurements. It has about 594 nodes scattered over 282 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.




Misc Tools