Labs

Lab 1: The Linux Shell

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. In this lab, we expect you to implement some basic commands using the repl.it Linux environment. Please attend the lab session with your laptop, and note that the lab assignment will be due by the end of the lab session.

The following links will help you to prepare for this lab session:

Lab 2: Bits, Ints and Floats, Vim

In this lab, we are going to discuss file permission in Linux, vi text editor, and bit representations of integers and floating point numbers. The lab practice will cover bitwise operations and floating point representations.

The following links will help you to prepare for this lab session:

Lab 3: C-Strings and GDB

In this lab, we are going to discuss strings in C, and also we will introduce you to GDB.

The following links will help you to prepare for this lab session:

Lab 4: Arrays/Pointer and Valgrind

In this lab, we are going to talk about Valgrind tool.

The following links will help you to prepare for this lab session:

Lab 5: Structs, Working with multiple files, writing your own Makefiles

In this lab, we are going to talk about structs, make and Makefiles.

The following links will help you to prepare for this lab session:

Lab 6: Machine Programming with Assembly

In this lab, you will learn about machine programming with Assembly language.

The following links will help you to prepare for this lab session:

Lab 7: Runtime Stack

In this lab, you will learn about managing runtime stack with Assembly language.

The following links will help you to prepare for this lab session:

Lab 8: Memory Organization

In this lab, you will learn about how you can effectively make use of cache memories to write more efficient code.

The following links will help you to prepare for this lab session:

Lab 9: Code Optimization

In this lab, you will learn about how you can optimize your code on your own as well the optimization strategies that GCC follow to do this for you.

Related links: