6.851: Advanced Data Structures (Spring'21)
Prof. Erik Demaine
TAs: Josh Brunner, Yevhenii Diomidov, Dylan Hendrickson
[Home] [Lectures] [Problem Sets]
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:
- Coding project: Write useful software, ideally in releasable form,
including documentation and demo.
- Theory project: Write an original research paper,
ideally in submittable form, as well as a presentation.
Projects consist of three main components:
- (Solved problems are not candidates for projects.
But if you have ideas for other types of projects,
feel free to ask staff about suitability.)
- For theory projects, this should be in the style of a research paper
from the literature, with the goal of getting it published.
- For coding projects, this could consist of good documentation,
including (a) how to use the software and
(b) a design document detailing decisions made, challenges faced, etc.
- Presentation (recorded):
- For theory projects, this should aim to be a presentation like
you would see at a conference, focusing on the problem and results,
and giving a flavor of the proof.
- For coding projects, this could consist of a screen-recorded demo
showing your software in action.
- Code: This should be a private repository
in our GitHub organization.
- For theory projects, this should include the source code for the
paper: LaTeX and all figures. In this case, you can use
if you prefer it over GitHub.
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.
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.
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).
When you start a GitHub repository
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).
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.
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).
Also add the
submit tag to the Project post,
or a new child post (so we know to start grading).
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.
- 1-presenter projects can use 10 minutes
- 2-presenter projects can use 12 minutes
- 3-presenter projects can use 14 minutes
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
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.
- Easy option: Zoom recording
- Create a Zoom meeting for your project group,
and select "Record to Cloud".
(MIT's Zoom license supports this feature; if you're using a different
Zoom license, make sure it also supports this feature.)
- After you end the meeting, the meeting creator will
get an email about the recording.
- Open the link, and do the following:
- Click the "Share" button, and select "Publicly"
(under "Share this recording").
This will let students from other organizations see your video.
- Click "Copy shareable link" and paste that link into Coauthor.
- Advanced option: YouTube unlisted video
- Record the video how you want (e.g., using
- Optionally edit the video how you want
(e.g., using Adobe Premiere).
- Upload the video to your YouTube channel as an Unlisted video.
- Include the direct link to that video on Coauthor.
- Do not attach a video file to Coauthor.