All exercises will affect your grade. However, since the exercises mostly serve as milestones towards building and exercising a full system, later exercises will often offer opportunities to remedy mistakes made in early ones. If you do so, the course staff will take this into consideration and look mostly at your later work.

Code reuse


In your submission, you may reuse general-purpose code (e.g., socket setup or sysfs registration), as long as you:

  1. Clearly designate the source of this code
  2. Cleanly integrate it into yours, including the same naming and spacing conventions. It should at least look 100% yours and clean from unnecessary components.

You may NOT reuse any code specific to this workshop, from other students or past semesters.

Late submission


A penalty of (n+1)^2 points of the grade will be reduced from late submissions, while n is the number of days since the midnight at the end of the submission day, rounded up.

The exercises

Fourth assignment - 2017:


Third assignment - 2017:



First assignment:

  • Creating virtual machines and Virtual networks
  • Use netfilter basic features to create simple barrier
  • Write simple Linux module
  • Due to 14/3/16
  • [FirstAssignment]


Second assignment:

  • Completing the environment
  • Use sysfs to communicate with the module from userspace
  • Create simple interface
  • Due to 4/4/16
  • [SecondAssignment]


Third assignment:

Fourth assignment:
  • Implementing statful connection tracking
  • Be familiar with common protocols
  • Support deep inspection in common complex protocols
  • Due to 30/5/2016
  • [FourthAssignment]
  • [hosts]