Low-Level Programming: Data Structures, Algorithms, Linux/Unix System Programming
Table of Content
About
This repository contains projects on low-level and system programming using C programming language. The concepts covered in these projects include but not limited to:
- Compilation
- Pre-processor, header files, macros
- Linting
- Variables, types, operators, expressions, loops, nested loops
- Conditional statements
- Functions
- Debugging
- Pointers, double pointers, function pointers, pointer arithmetic
- Arrays, multidimensional arrays, structures
- Dynamic memory allocation
- Static libraries
- Command-line arguments
- Recursion
- Variadic functions
- Singly linked lists
- Bit manipulation
- File input/output
- System calls
- Dynamic libraries
- Stacks and queues
- Hash tables
- Binary trees
- Makefiles
Requirements
-
A Linux environment (Ubuntu 20.04 LTS was used for all the projects in this repo).
-
All code is compiled using GNU C compiler,
gcc
, with flags-Wall -Werror -Wextra -pedantic -std=gnu89
Projects
These projects are written mainly in C. More about individual projects can be found in their respective READMEs.
The projects are:
- 0x00. C - Hello, World
- 0x01. C - Variables, if, else, while
- 0x02. C - Functions, nested loops
- 0x03. C - Debugging
- 0x04. C - More functions, more nested loops
- 0x05. C - Pointers, arrays and strings
- 0x06. C - More pointers, arrays and strings
- 0x07. C - Even more pointers, arrays and strings
- 0x08. C - Recursion
- 0x09. C - Static libraries
- 0x0A. C - argc, argv
- 0x0B. C - malloc, free
- 0x0C. C - more malloc, free
- 0x0D. C - preprocessor
- 0x0E. C - structures, typedef
- 0x0F. C - Function pointers
- 0x10. C - Variadic functions
- 0x11. C - printf
- 0x12. C - singly-linked lists
- 0x13. C - More singly linked lists
- 0x14. C - Bit manipulation
- 0x15. C - File input/output
- 0x16. C - Simple shell
- 0x17. C - Doubly linked lists
- 0x18. C - Dynamic Libraries
- 0x19. C - Stacks and Queues
- 0x1A. C - Hash tables
- 0x1B. C - Binary trees
- 0x1C. C - Makefiles
Acknowledgement
Author: Ian Duncan.
All work contained in this repository was completed as part of the curriculum for the 12-month ALX Software Engineering Programme, offered in collaboration with Holberton School. The programme prepares the students with the technical and work-ready skills for a global career as a full-Stack Developer.