Final project

The final project is a major component of this course. It is a great opportunity to learn more about a topic that interests you and to exercise your creativity at the same time. Many course projects have the potential to turn into full-blown research papers. Some student projects also have serious real-world impact. On top of all that, the project counts for 40% of your final grade.

You will complete the final projects in groups of three or four students. We will explain how that works in a moment.

There are three components to the final project:

  1. "checkpoint" assignments that your team will submit throughout the semester,
  2. a final-project presentation that you will deliver in class, and
  3. a written report that you will submit at the end of the semester. (We will post the written reports online at the end of the semester.)
For the checkpoint assignments, we will grade you primarily on effort: Are you meeting weekly with your team? Are you putting time and thought into your project? Is every one of your team members contributing? For the final presentation and report, we will grade you primarily on the outcome: Did you identify a challenging technical question? Does your work reflect an in-depth understanding of it? Did you make any progress on answering it?

Timeline and assignment details

The due dates for the components of the project are listed on the course calendar Important:We will not allow extensions on components of the final project. This is to make sure that your team stays on schedule to complete the project by the end of the semester. For undergraduates: If something exceptional comes up that prevents you from submitting a project assignment, please follow the steps listed on the course policies page

Step 1: Brainstorm project ideas.

Your first task is to come up with a potential project idea. Your idea does not need to be fully baked, but you should have done enough reading to make sure that it is plausible. The project topic you submit here will most likely not be the topic that you work on during the semester. The idea is just to get you thinking and help you find a project team.

If you are not sure where to start, do not be intimidated! Some resources to aid your brainstorming are:

Deliverable: You must write 4-5 sentences on your project idea.
   If you are looking for a team or more teammates: You should post your project idea on Piazza in the "Search for Teammates!" thread.
   If you have a team already: You should make a single post in a new thread with the names of your team members and one candidate project idea per team member. (That is, 4-5 sentences per team member.)

Step 2: Form a project team.

You must form a final project team by the date listed on the course calendar. Your team need not be the same as your homework groups, although it can be if you like. Your team must consist of three or four students. Students who need help finding a project group should contact the staff.

The composition of your team may change over the course of the semester, as students drop the class, etc. If a serious problem arises within your team that you cannot resolve on your own, please contact the course staff via a private question on Piazza. It is possible to dissolve and reform teams mid-semester with permission of the course staff.

Once you have formed a team, your team members must meet at least once per week throughout the semester. To ensure this, we ask you to agree on a fixed weekly meeting time. All team members must commit to attending a project meeting at that time.

Deliverable: You must submit via Gradescope a document containing

Step 3: Submit project check-in reports.

At many points in the semester, we will ask you to submit a project "check-in" document via Gradescope.

Deliverable: This document just lists:

Step 4: Meet with a TA for feedback on project topic.

Early on, your team will meet with a TA to discuss your project topic and planned approach. The TA will give you feedback and suggestions. Please include a brief response to this feedback in the following check-in report. This TA will almost certainly be the TA who grades your written project report at the end of the semester. Your TA approve your project idea.

If your project will attack a real system in any way, you must get permission from the person/organization behind the system you plan to attack or analyze. (See the "Computing Ethics" section of the course policies.) You must list the people/organizations you will ask for permission in this week's check-in report.

Deliverable: A 15-minute meeting with a TA, plus a response to the TA feedback in your weekly check-in report. The TAs will announce their plan for scheduling these meetings mid-way through the semester. All members of your team must be present for full credit.

Step 5: Submit project proposal.

Once you have finalized your project topic, you must submit a brief project proposal that describes the topic you plan to study, why it is important, what is known about it already (i.e., key references), what you plan to do, and what results you expect.

If you are doing reverse engineering, an attack, or a security analysis of an institute, app, or company, your group should have requested and received permission from the relevant people/organizations by this date. Please ask the class staff if you are unsure whether your group needs to request permission.

Deliverable: A one-page document, typeset in Latex, that summarizes your project topic. Ideally, this document can become the introduction to your final written report. It must be roughly 500 words and typeset in 12-point font.

Step 6: Meet with a TA for feedback on your approach and progress.

Midway through the project, your team will meet with a TA to discuss your progress and any challenges you are dealing with. The TA will give you feedback and suggestions. Please include a brief response to this feedback in the following check-in report.

Deliverable: A 15-minute meeting with a TA, plus a response to the TA feedback in your weekly check-in report. The TAs will announce their plan for scheduling these meetings mid-way through the semester. All members of your team must be present for full credit.

Step 7: Present results in class.

We will dedicate the last few lecture slots of the semester to final-project presentations.

Deliverable: Your team will give an eight-minute presentation on your work and then will answer questions for roughly two minutes. For full credit, you must:

Step 8: Submit final written report.

The last step in the project is the final report. The final report is due on the last day of the semester.

We will post your project reports on the class website at the end of the term. We may make exceptions if your report discloses vulnerabilities that a vendor is still patching; in that case we will post the report at the end of the summer, or at another agreed-upon time.

Deliverable: Your final report should be roughly 3,500--4,000 words long (not including references), typeset in Latex in 12-point font. Your report must somewhere explain which team members contributed which pieces of the final product.

Logistics

Grading

The grading breakdown will be:

Legal advice and ethics

Please make sure to review the "Computing Ethics" section of the course policies page. No matter the topic of your project, we expect you to make responsible use of MIT's computing resources and to do not harm to the computer systems of others.

If, in the course of completing your final project, legal issues arise, you can take advantage of the (free!) BU/MIT Technology Law Clinic.

If at any point you are unsure about a legal or ethical question relating to your project, please contact the course staff early on and we can try to work through it with you and/or put you in touch with people who can give you expert advice.


Course website design courtesy of PDOS and Katrina LaCurts.