Senior Project Guidelines

You want to do a senior project! That’s great! (Well, actually, you’re probably required to do a senior project. That’s pretty great, too.)

What is a senior project?

The goal of the senior project in the CS program is to allow and require you to plan and execute a project that you come up with yourself or as part of a team. It should be something that you’re interested in, and you should be in charge of organizing it and carrying out the research and development yourself (or yourselves).

It’s definitely fine to work on a senior project as part of a team. In fact, I encourage it! Many (most?) of the best projects are built as team projects.

My employer has a great idea for a senior project

I’m definitely not that excited, though, about projects that you’re carrying out in connection with a company that you work for. My experience is that these projects rarely constitute the kind of independently driven research experience that is the goal of the senior project.

More crassly worded: the senior project is not intedended as a vehicle for your employer to obtain free labor.


Does a senior project have to be original? No, it does not.

The key to a good senior project is that it’s something that you’re excited about. If you want to build and implement your own version of twitter, then … go for it!

If you’re not sure whether something is a good idea for a senior project, then ask me!

I don’t have an idea, can you give me one?

Probably not.

I have had a few successful senior projects that started with students asking “what do you have that I can work on?” … but the number is pretty small. In general, the excitement that will carry you through on a good senior project usually comes from the fact that the idea was yours to begin with.

But hey: if you’re passionate about programming languages or theorem proving, give me a try.

Before you get started

In order to enroll in Senior Project, you need to get my permission, and you need to put together a proposal.

A proposal should contain two things.

  • A one-page summary of your proposed plan. You should include details on what you want to do, and also on what other work is out there that’s related to your project.

  • A tentative “sprint”-level proposed schedule. This should include tentative goals for each two-week period in both the first and second halves of the project. In other words, ten sprint goals. These goals should be concrete and testable, but they don’t have to come true. Goals like “research techniques for sound compression” don’t actually correspond to any deliverable, and have the habit of more or less evaporating. “Implement the Fast Fourier Transform”, on the other hand, is something we can probably work with.

It’s important to keep in mind that these goals are totally hypothetical. It’s normal to discover that some things are easier than expected, and (more commonly) that some things are a lot harder than expected. Typically, the beginning of the second quarter is a good time to re-evaluate these goals.

Grading Policy

In senior project it’s more or less literally true that, as the saying goes, “90% of life is just showing up.” That is: if you show up to the meetings you schedule and are putting in reasonable and significant effort, I will give you a grade that reflects that: a B+, A-, or A. Lower grades are generally reserved for situations where students disappear, or don’t seem to be putting in any effort.

During Senior Project I

We should plan on meeting either every week or every other week.

During Senior Project II

We should probably plan on meeting every week. There are exceptions, of course.

Senior Project Writeup

The writeup is a significant part of your senior project, and you should plan on using the last three to four weeks of your second quarter to write it up.

A good senior project should … well, it should be interesting! To make this happen, your goal is to focus not on yourself, but on the person reading the report: can you deliver insight that will improve that person’s life?

This can happen in many different ways. The most obvious one is that you’ve made some kind of research discovery, and you want to communicate it, so that others can stand on your shoulders and use your insight to make the world better.

That’s often not possible, when your principal work was in building a tool. In these situations, your best bet is generally to try to draw conclusions from your own experience: what do you wish you’d known when you started? Can you formulate your learning as a concrete set of lessons?

Again: think about the reader.

You should plan on submitting a rough draft of your senior project at least a week before the end of classes, to give me time to read it and ask you for edits or rewrites. Also, we should discuss your writeup with about four weeks to go, so that I know roughly where you’re headed.