Skip to main content



This document is not yet written.

This course makes some assumptions about the students experience and knowledge. All students are expected have:

  • A level of comfort with a Linux shell prompt (material assumes bash).
  • Familiarity with C and the standard C library, notably C99.
  • Familiarity with an assembly language (e.g. x86, arm, mips)
  • An ability to google for help and consumption of technical documentation.
  • An applicable reason for going through the material beyond curiosity.

As for expected materials, students are assumed to have:

  • A developer machine (e.g. desktop, laptop) that is capable of running a Virtual Machine running Docker.
    • Need disk space to support an Ubuntu distro with ~20GB of extra space.
  • At least 3 available USB-A ports for device connectivity (e.g. usb hub).
  • RJ45 ethernet connectivity (e.g. internal NIC or usb NIC).
  • Need the ability to pass through USB and network interfaces to VM (e.g. admin rights).