This repository contains projects and exercises completed during the ALX Software Engineering program, focusing on low-level programming and algorithms in C. Below is a list of the covered projects, along with brief descriptions.
- 0x00. C - Hello, World
- 0x01. C - Variables, if, else, while
- First Day of C Programming
- 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
- 0x14. C - Bit manipulation
- 0x18. C - Dynamic libraries
- 0x1C. C - Makefiles
An introduction to C programming. Topics covered include the structure of a C program, compilation, and the use of printf
and puts
.
Basic concepts of variables, conditionals, and loops in C. Exercises involve implementing simple algorithms using if
, else
, and while
.
A comprehensive overview of the fundamental concepts in C programming, aimed at getting familiar with the language.
Focuses on writing functions and using nested loops to solve problems. Includes tasks on function prototypes, recursion, and scope.
Techniques for debugging C programs. Emphasis on reading error messages, using debugging tools, and writing clean code to minimize bugs.
Advanced exercises on functions and nested loops, including more complex algorithms and problem-solving strategies.
Introduction to pointers, arrays, and strings in C. Covers pointer arithmetic, array manipulation, and string operations.
Further exploration of pointers, arrays, and strings. Focuses on multidimensional arrays, dynamic memory allocation, and advanced pointer usage.
Continuation of pointers, arrays, and strings. Tasks involve complex string manipulation and array processing algorithms.
Introduction to recursion and its applications in C programming. Includes problems that can be solved using recursive functions.
Covers the creation and use of static libraries in C. Discusses the benefits of modular programming and code reuse.
Focuses on command-line arguments in C. Teaches how to handle input from the command line using argc
and argv
.
Dynamic memory allocation in C using malloc
and free
. Emphasis on memory management and avoiding memory leaks.
Advanced concepts in dynamic memory allocation. Includes tasks on reallocating memory and handling memory in complex data structures.
Understanding the C preprocessor. Topics include macros, header files, and conditional compilation.
Introduction to structures and typedef in C. Covers defining and using structures, and creating type aliases with typedef
.
Explores the use of function pointers in C. Discusses how to pass functions as arguments and use them in callback mechanisms.
Covers variadic functions in C, which accept a variable number of arguments. Includes the use of stdarg.h
library.
Detailed study of the printf
function. Includes implementation of custom printf functions and understanding formatted output.
Introduction to bit manipulation techniques in C. Covers bitwise operators and their applications in low-level programming.
Focuses on the creation and usage of dynamic libraries in C. Discusses the differences between static and dynamic libraries.
Introduction to make
and Makefiles. Teaches how to automate the build process of C programs using Makefiles.
This repository showcases the progression and depth of topics covered during the ALX program, providing a comprehensive understanding of low-level programming in C. Each project directory contains detailed task descriptions, code solutions, and relevant documentation.