# Assignments

## Assignment 0: Getting Started with Unix and C

**Due:** October ~~16~~ 18, 2020 (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:** October 28, 2020 (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: Movie Review Sentiment Analysis

**Due:** October 28, 2020 (23:59:59)

Sentiment Analysis is a Big Data problem which seeks to determine the general attitude of a writer given some text they have written. The problem that you’ll solve in this assignment is about calculating or analyzing sentiments of the critics by their reviews about the movie.

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

## Assignment 3: Shortest Path Between Two Cities

**Due:** November 27, 2020 (23:59:59)

In this asignment, you are expected to find the shortest path between two cities in a given road network using the Floyd-Warshall algorithm, in which you are allowed to use *only* dynamic memory allocation to create any array in the code.

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

## Assignment 4: Defusing a Binary Bomb

**Due:** December 11, 2020 (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:** January 4, 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:** January 20, 2021 (23:59:59)

The purpose of this assignment is to help you understand the impact that cache memories can have on the performance of your C programs.

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