6.892 Algorithmic Lower Bounds: Fun with Hardness Proofs (Spring 2019)
Prof. Erik Demaine
TAs: Jeffrey Bosboom, Jayson Lynch
[Problem Sets] [Project]
The project is the most important component of the course.
It can take several forms:
Theoretical contribution to the field (tackle/solve a problem, formulate interesting open problems or conjectures, etc.).
Survey a few papers on a related topic (not already well-covered by the class).
Design a possible new lecture for a future edition of this class.
Quick reference guide or visualization summarizing a large body of
related results, e.g., SAT variations and which are easy/hard.
Substantially improve the Wikipedia articles for several topics related to the class.
Recommended only if you have existing experience editing Wikipedia.
In this case, your project write-up and presentation should summarize the
changes you made, why you made the decisions you did, and any challenges you
ran into, in addition to linking to new articles and change diffs.
Implement/visualize one or more reductions. Your program should take in a description of an instance of a problem and output a corresponding instance of another problem. Some attention should be paid to the layout and aesthetics of the output.
Implement/experiment with heuristics for NP-hard problems,
e.g., those seen in class.
Design a video/board/card game or puzzle, and analyze its complexity. Or design a game about reductions.
Create artwork based on the ideas in the class. Your work should be both aesthetically compelling and technically grounded (though the latter need not be explicitly visible). You may use any medium you wish; the challenge of working with that format will be taken into consideration.
You are encouraged to relate the final project to your research interests, and
you will not be limited to the topics discussed in class.
- Project proposals are due Tuesday, April 2, 2019 at noon,
in place of a regular problem set,
and should be submitted
See Problem Set 7 for details.
- The course staff will then give feedback on your proposal, including any
tips and direction we can think of,
and decide whether to approve your project's theme.
- If you decide to change your project direction substantially, it is
required that you check in with the course staff to get feedback/approval
on the new direction.
You should not change the topic of the project, but you may change the form
of the project (such as writing a survey if you fail to bring a
- Subsequent problem sets will mainly consist of
project progress reports.
- By MIT policy, the project paper is due on the last regularly scheduled lecture
of this class, Wednesday, May 15, 2019.
Please turn it in by 7:00pm (start of class).
No extensions are possible.
- The project presentation is due somewhat earlier depending on when it
gets scheduled into a lecture slot; if your presentation is earlier, you are
expected to have made less progress, but you should still give a clear
description of the problem you are tackling and what you plan to do.
Collaboration is strongly encouraged, especially for research
is often the key to successful research in theoretical computer science.
You can work in a group of students in the class if you find common interests.
(Students listening to the class will likely have less time to
devote, but they are welcome to participate in a project too.)
In particular, we expect that many projects will naturally grow out of the
collaborations during the interactive portions of class.
We have higher expectations of projects by larger groups.
You are also welcome to collaborate with anyone outside the class,
including your research supervisor (if you have one)
and including the course staff.
The only constraint for the class is that your own contribution should be
substantial enough, both in terms of solving problems and writing it up.
(To evaluate “substantial enough”, talk to the course staff.)
In any case, collaborators should be clearly marked in the project proposal,
paper, and presentation.
If you work on a team, you will be required to
post a short private Coauthor message
(in the appropriate thread)
summarizing your own contributions to the
project(s) you were involved in (when submitting the project).
This will let us ensure that everyone makes substantial-enough contributions.
You are allowed to work on multiple projects, possibly with different teams.
Just make sure that the total amount of work you do sums to at least one
“person project unit”.
We suggest having one as your main, or one or a small number
to which you will make major contributions, along with any number of
projects to which you will make minor contributions.
We also require that you do some of the writing on at least one project paper,
and participate in at least one of the project presentations.
In particular, we'd like projects tackling/solving open problems
to match papers as much as possible.
For example, instead of working on one project about two small papers, write
two smaller projects. Conversely, instead of doing a project about your
piece of a larger paper, be a part of a large project to write the entire
paper. It's also fine to write up other people's results from open problem
solving if they're OK with it (in particular, if they're not planning to do so
for their class project) — help with writing is an important
contribution to any paper!
All presentations will during the usual class time on May 8 and 15,
but will be in room 32-141. Some details/tips:
- 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, in particular to
leave a little time for questions, but do *not* go over time. Practice your
talk, both to measure and to optimize time spent.
- All presentations will be off of Erik's (Windows) laptop, so be sure to email
me your slides and any video files needed to play it, along with any software
you want to demo (with instructions for how to get it running). Technically,
we can display most files except Keynote (as it's MacOS only, but it can export
PDF); PowerPoint, PDF, and Google Slides links are all good options to send. I
can install most any software you might need.
- A draft of your presentation is due at noon on the day before your
presentation (to make sure there are no technical issues); final files are due
at noon on the day of your presentation. Do not show up with a USB key
or laptop and expect to use the contents. (You can try emailing updated files
after the deadline, and we'll do our best to incorporate, but no guarantees.)
- Email your presentation files to Erik with "6.892" in the subject.
- During the presentation, there will be a tablet showing you how much time
you have left. It will make a bell sound when you have 2 minutes left, two
bell sounds when you have 1 minute left, and three bell sounds when you must
To submit your final project, attach a PDF document to
the relevant thread on Coauthor,
and then edit that post to at-mention everyone
involved in the project, and to add a link to the source files
(LaTeX, figures, code, etc.).
We require putting all source files into a repository on
our MIT Github organization,
or an Overleaf document with link sharing turned on,
and including a link in your post.
If you're unfamiliar with Github, here are some basic instructions:
- Create a new repository with title similar to your project (if you don't have one already), marked Private.
- If you're already using or know how to use Git,
push your repository to the resulting remote.
- To just upload your files, go to
and drag your files in.