Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Secure Hardware Design (Spring 2025)

Learn to attack processors… and learn to defend them!

Welcome to 6.5950/6.5951 (previously 6.S983 and 6.888)!

6.5950/6.5951 is a research-oriented course on secure hardware design. 6.5950/6.5951 will help you understand the critical security problems in modern hardware and common limitations of existing security solutions. Through a mix of lectures and paper discussions, we will learn the principles of various attacks and how to design effective hardware mitigations and hardware/software co-design solutions.

Previous years’ website

Feel free to post your anonymous feedback here during the semester.

Meeting Location and Times

Required Lectures: Mondays and Wednesdays from 1:00pm to 2:30pm in Room E25-111.

Note that participation is required at scheduled time; take this course only if you will generally be able to participate!

Lecture videos can be found on Panopto.

We will use Piazza for all course-related discussion.

Assignments and Grading

6.5950/6.5951 will have no midterm or final exams. There are three required assignments:

  • Lab Assignments (85% for graduate version, 97% for undergraduate version): There will be 8 lab assignments. You will be asked to implement your own attacks that work on real machines (not simulators). You must complete all labs to pass this course.

  • Lab Check-offs(3%): Over the course of the term, we will randomly select one of your labs for an in-person check-off. During a check-off you will discuss your submission with the TA, describing your implementation, and elaborating on your written answers.

  • Paper Discussion (12% for graduate version): Each student taking graduate version will be asked to select a topic from the 3 discussion sessions, review relevant materials, write a presentation, and lead the class discussion for that topic. To facilitate a fruitful exchange, all students (taking either graduate or undergraduate versions) are expected to read the papers prior to the session and engage in class discussion. Although we will not be formally tracking attendance, we expect regular attendance and participation.

Grade distribution follows the following categories:

  • A: [90, 100]
  • B: [80, 90)
  • C: [70, 80)
  • F: [0, 65)

Staff

Professor Mengjia Yan
Email: mengjia at csail.mit.edu
Office: 32-G840
Office Hours (32-G840): Fridays 2:30pm-3:30pm

TA William Liu, Shixin Song, Mario Mrowka, Selena Qiao
Email: shd-staff at mit.edu
Office: 32-G786
Office Hours (32-G7 Lobby): Mondays 11am-1pm; Tuesdays 3pm-5pm; Thursdays 3pm-7pm

Prerequisites

6.5950/6.5951 is primarily intended for seniors, M.Eng, and PhD students who want to learn about how to design hardware processors with security as the primary goal. You should have a good understanding of basic computer architecture (i.e., a strong grasp of the material taught in 6.004) and C-programming experience.

6.5950/6.5951 is a 12-unit (3-0-9) subject. It is listed as an AUS/AAGS and TQE course.

Late Policy

Throughout the semester, you have 120 free late hours. You can use these free late hours if you are sick, have a busy week, or need more time to complete the lab. There are two ways that you could lose points due to late submissions. Firstly, after using all free late hours, there is 1% penalty per additional late hour. Secondly, if a single lab is submitted more than 120 hours late (even if part of them are free late hours), no credit will be awarded for that lab.

Please note that long weekends (Feb 15–17, Apr 19–21) and spring break (Mar 22–30) are excluded from late hour calculations.

In addition, extensions without penalty may be granted on a case-by-case basis with support from S3. Please email the staff to request an extra extension. If there are medical issues that require further accommodation, please contact the staff.

Collaboration Policy

Laboratory exercises should be completed individually, and the work you hand in must be your own. Copying another person’s work or allowing your work to be copied by others is a serious academic offense and will be treated as such. As a general rule, follow the MIT Academic Integrity Policy and, when in doubt, ask the course staff. Violations of this policy will be treated severely.

Examples of permitted collaboration

  • Allowed: Talk to a friend about a lab assignment and discuss at a high level how to go about completing the assignment.
  • Allowed: Ask a staff member for help if you are confused or stuck.
  • Allowed: After you’ve completed and submitted your own lab, help a friend debug their code solely by looking at their code and trying to identify problems with it.

Examples of prohibited collaboration

  • Not Allowed: Help a friend debug their code by bringing up your solution and comparing the two to identify differences.
  • Not Allowed: Using code from a friend who previously took the class as a starting point for completing your labs and then making some modifications to that code.
  • Not Allowed: Working together so closely that you are basically typing in your solutions side by side.
  • Not Allowed: Copying any portion of someone elses work even if you make some modifications to it.
  • Not Allowed: Sharing any portion of your code with someone else.
  • Not Allowed: Get help from a friend who is looking at their solutions while helping you.

See the MIT Academic Integrity Policy.

Warning

You’ll learn how to attack computer systems in this class in order to better understand how to design defenses. Please don’t attack other people’s computers or information without their prior permission. As well as being a bad idea, it may be illegal or a violation of MIT network rules and can get you into serious trouble.