Skip to content

tpauldike/alx-low_level_programming

Repository files navigation

ALX Low Level Programming

This course introduced me to C programming and helped me grow to the point where I agreed that C is fun

The repository holds most of the C projects that I did while training to become a fullstack software engineer in the fully funded ALX SWE program. The table below gives a brief summary of all the projects; you may click on any of them to see the content of the particular project.

Project Title Brief Description
C - Hello World This put to test my knowledge of c compilation stages and processes, bash scripting, and environment variables. Here, I learned how to use certain operators (such as sizeof) and standard library functions (such as; printf, puts & putchar) in c. And more...
C - Variables, if, else, while The project gave me an understanding of datatypes, variables, conditional statements and while loop in c. I also learned about arithematic, logical, relational and boolen operators; I experienced the use of ASCII values as well
C - Functions, Nested loops Here, I learned how to use nested loops, the scope of variables, header files, prototypes, function declaration and function definition in c
C - Debugging The project was about how to read errors and manually get bugs out of the codes
C - More functions, Nested loops All about writing some user define functions, saving the prototypes in the main.h file and testing them in some main.c files
C - Pointers arrays strings - 0 About pointers, arrays, strings and how to manipulate them
C - Pointers arrays strings - 1 Here, I was made to write more user defined functions and to emulate some standard library functions defined in strings.h
C - Pointers arrays strings - 2 This was about pointers to pointers, multidimensional arrays, and emulating common standard library functions used to manipulate strings
C - Recursion About recursive functions in c, how to use them, when to use them, and when not to use them
C - Static libraries The meaning, function, making and usage of static libraries in c; understanding what ar, ranlib and nm do and how they are used
C - argc argv The project was about writing programs that arguments could be passed to on the command line while running them.
C - Malloc, free About dynamic memory allocation (malloc) and freeing the dynamically allocated memory, and how to check for memory leaks with valgrind
C - More malloc, free This project introduced the exit, calloc, realloc (standard library) functions and how they are used
C - Preprocessor About common predefined and user defined macros and how to use them; and the essence of include guard in header files
C - Structures, typedef The project was about using struct and typedef to create a data structure and non-existing datatype that is made up of some primitive datatypes. If you wish to learn about struct, I simplified it here
C - Function pointers About pointers that hold the address of funtions and serve as access points of the functions
C - Variadic functions Writing c functions that take variable number of arguments each time they're called; knowing the use of va_arg, va_start, va_end and const
C - Singly linked list About linking up nodes which take the form of structs that are connected to one another in an orderly manner, following convention
C - More singly linked list How to use singly linked list
C - Bit manipulation How to manipulate bits and use bitwise operators
C - File I/O About how to use system calls, such as; open, close, read and write to interact with the kernel and how to use the flags — O_RDONLY, O_WRONLY, O_RDWR
C - Doubly linked list A more complex form of singly linked list
C - Dynamic libraries The meaning, function, making and usage of dynamic libraries in c; understanding what nm, ldd and ldconfig do and how they are used; knowing the use of the environment variable $LD_LIBRARY_PATH and how to use it
C - Hash tables About hash functions and hash tables, what collisions are and the common ways to handle them
C - Makefile Writing own Makefile and running it with the make utility on a Linux machine