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


There will be 6 laboratory exercises given throughout the semester related to lecture content.

Lab Difficulty Released On Due On
1. Website Fingerprinting (10%) Easy Mon, February 6 Thu, Feb 16
2. Cache Attacks (14%) Hard Wed, Feb 15 Thu, March 9
3. Spectre (12%) Easy Wed, March 8 Thu, March 23
4. Rowhammer (12%) Hard Wed, March 22 Thu, Apr 13
5. ASLR Bypasses (12%) Easy Wed, April 12 Thu, Apr 27
6. CPU Fuzzing (12% + 3% Check-off) Moderate Wed, April 27 Tue, May 16

In total, your lab grade contributes 75% to your total grade in the course. Each lab is due at 23:59:59.

Lab Check-Offs

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

Submission Instructions

Labs will be submitted via GitHub Classroom, and accompanying reports will be submitted via Gradescope.


To access and submit lab materials, you will need to have a account. For each lab, we will create a new repository for you on GitHub Classroom. You can checkout each assignment using the invite link posted on Piazza/Canvas.

To push your changes (submitting your work), you should perform the following:

  1. git add FILES_YOU_CHANGED
  2. git commit -m "WHAT YOU CHANGED"
  3. git push

GitHub classroom will snapshot the state of your repository at the due date (at 23:59:59), which we will use to grade your submission. Your repository will not be locked after that point, feel free to continue to push if we have allowed an extension for you.


Each lab contains exercises and discussion questions. Include your answers to these prompts in a PDF file, uploaded to Gradescope (prior to the submission deadline).

New Machine Setup

The labs in this course are run on different machines. For instance, the first lab (Website Fingerprinting) is run on your own machine, and the second lab (Cache Attacks) is run on For each machine you use, you must perform the following initial setup:

  1. If working remotely (labs 2-6), connect using ssh (e.g. ssh
  2. ssh-keygen -t rsa -b 4096 (note that if you already have an ssh key, you can skip this)
  3. Press return until the command finishes.
  4. cat ~/.ssh/ (feel free to use an existing key if you have one)
  5. Copy this and create a new ssh key on your GitHub account (instructions if you need help).

Final Project

Students can choose to do an optional final project in place of labs 4, 5, and 6. The final project will replace the grades for those three labs.

Table of contents