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

Due: Oct 7, 2021 (23:59:59)

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

Due: Oct 21, 2021 (23:59:59)

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

Due: Nov 4, 2021 (23:59:59)

The purpose of this assignment is to become more familiar with Strings in C language and analyzing SMS messages to predict whether they are SPAM or not.

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

Assignment 3: Heap Management

Due: Nov 25, 2021 (23:59:59)

In this assignment, you will implement Game of Life, a cellular automaton devised by the British mathematician John Horton in 1970, and 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

Due: Dec 9, 2021 (23:59:59)

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

Due: Dec 23, 2021 (23:59:59)

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

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

Assignment 6: Understanding Cache Memories

Due: Jan 6, 2021 (23:59:59)

The purpose of this assignment is to help you understand how cache memories work. Hence, you will implement a cache simulator to mimic the operations on a cache.

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