Labs

Lab 1: The Linux Shell (slides)

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 (slides)

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 Valgrind (slides)

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

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

Lab 4: Arrays/Pointer and GDB (slides)

In this lab, we are going to talk about GNU Debugger (gdb).

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

Lab 5: Structs and Working with multiple files, writing your own Makefiles (slides)

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

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

Lab 6: Machine Programming with Assembly (slides)

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 (slides)

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 (slides)

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 (slides)

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: