6.851: Advanced Data Structures (Spring'21)

Prof. Erik Demaine     TAs: Josh Brunner, Yevhenii Diomidov, Dylan Hendrickson

[Home] [Lectures] [Problem Sets] [Project] [Coauthor] [GitHub] [Accessibility]


Check out 2021 coding projects in our GitHub organization

The goal of a 6.851 project is to complete work done during class into a finished (or nearly finished) form. The intent is to take the pieces of work done during in-class problem solving (or between classes) from posts on Coauthor to the next level of quality and polish, so that we can release them to the world.

Projects can take two forms:

  1. Coding project: Write useful software, ideally in releasable form, including documentation and demo.
  2. Theory project: Write an original research paper, ideally in submittable form, as well as a presentation.

Projects consist of three main components:


Both small and large projects are encouraged. A "large" project is at the scale of a typical final project in a graduate class (such as past versions of 6.851). A "small" project is still interesting enough to be shared with the world but smaller in scope, and may be worth ~half of the available project portion of your grade. You can be involved in multiple projects.


Like in-class problem solving, projects are strongly encouraged to be collaborative, ideally including everyone involved in the in-class work that led to the project.

If you work on a team, you will be required to post a short private Coauthor message (in the appropriate thread) summarizing everyone's contributions to the project. This will let us assign appropriate credit to students' overall project grades.


Projects can be done at any time during the semester. If you obtain coding or theory results early in the semester, then we encourage you to finish the project while you still remember them well! We will try to grade projects in a timely fashion so you know where you stand with respect to the flexible grading scheme.

According to MIT policy, projects must be submitted before the last regularly scheduled lecture, which is Thursday, May 20, 2021. But again, you can submit them earlier.


  1. Before you start a project, you should announce that you are doing so by adding a post with title "Project: <title>" to the relevant thread, requesting that everyone who wants to join should add themselves as a coauthor (and discuss with the others). Move this Project post to the top of the thread.
  2. Also add the project tag to the Project post and the root post of the thread (so it's easy to see which problems have associated projects).
  3. When you start a GitHub repository (make a private repo within our organization) or an Overleaf project for the code/write-up, link to that in the Project post (so everyone knows where to do work).
  4. As you inevitably discover new results or mistakes while working on the project, be sure to keep the Coauthor thread up-to-date with new/edited posts.
  5. When you've finished the project, attach two PDF files — the write-up and the presentation slides — and add a link to the recorded presentation (details below).
  6. Also add the submit tag to the Project post, or a new child post (so we know to start grading).
  7. If you worked in a team, you are also required to post a short private Coauthor message (in the appropriate thread) summarizing your own contributions to the project(s) you were involved in. This will let us assign appropriate project credit to the participants.


Each project should be presented by all the major contributors. A project with k presenters will have 8 + 2k minutes for their presentation. So:

Presentations are short, so be efficient in what you cover (and be sure to split the time roughly evenly between speakers). Focus on the problem you tackled, why it's interesting, and what results you came up with, and don't get bogged down in details. It's OK to go a little under time, but do not go over time. Practice your talk, both to measure and to optimize time spent.

To submit your presentation, attach a PDF document for your slides, and then edit that PDF post to be coauthored by everyone involved in the project, and add a link to your presentation recording in the body. (If you wish, you can also attach a PowerPoint file, or link to Google Slides or other cloud service, but PDF makes it easy to view the slides within Coauthor.)

Your presentation recording can be done in one of two ways:

Your uploaded slides and video link will be visible to your fellow students, so that they can watch your talk as well.