Assignments

Grace Days

You may use up to 7 grace days (in total) over the course of the semester for the assignments. That is you can submit your solutions without any penalty if you have free grace days left. Any additional unapproved late submission will be punished (1 day late: 20% off, 2 days late: 40% off). No submission after 2 days will be accepted.

Assignment 0: Getting Started with Unix and C

This assignment aims at making sure you familiarize yourself with basic C fundamentals and building simple C programs as well as basic Git commands and working through Github classroom.

For a detailed description of the practical, please read this document.

Assignment 1: Manipulating Bits

The purpose of this assignment is to become more familiar with bit-level representations of integers and floating point numbers. You’ll do this by solving a series of programming “puzzles.” Many of these puzzles are quite artificial, but you’ll find yourself thinking much more about bits in working your way through them.

For a detailed description of the practical, please read this document.

Assignment 2: Strings in C

The goal of this assignment is to become more familiar with Strings in C language. In particular, you will be working on several tasks based on parsing and querying IP addresses.

For a detailed description of the practical, please read this document.

Assignment 3: Heap Management

In this assignment, you will gain experience in using pointers, dynamic arrays and heap management.

For a detailed description of the practical, please read this document.

Assignment 4: Defusing a Binary Bomb

The purpose of this assignment is to help you to become familiar with x86-64 instruction set and to understand assembly code representations of C programs.

For a detailed description of the practical, please read this document.

Assignment 5: Buffer Overflow Attacks

The purpose of this assignment is to help you get familiar with how buffer overflow vulnerabilities are formed, found, exploited and protected.