- This repository is a collection of directories containing a combination of
bash
scripts andC
programs as part of my Fullstack Software Engineering learning journey with ALX. - The files contained in these directories demonstrate my knowledge and understanding of the fundamental principles of computer programming.
- All scripts and programs were created, compiled and tested on an Ubuntu 20.04 environment.
- All programs in this repository were compiled using
gcc -Wall -Werror -Wextra -pedantic -std=gnu89 [file(s)]
C
Basics. Concepts covered include:
- Program Structure
- Fundamental Data Types
- Compiling and Running
C
programs - Header Files
Program control flow. Concepts covered include:
- Data Types and Variables
- Declareations, Expressions and Assignment
- Arithmetic Operators (
+
,-
,/
,*
,**
,%
) - Relational Operators (
<
,>
,<=
,>=
,==
,!=
) - Logical Operators (
&&
,||
,!
) - Conditionals (
if
,else if
,else
) - Loops (
for
,while
,do while
) break
andcontinue
statements- Betty coding standard
- ASCII
- Precedence and Associativity of operators
- What are nested loops and how to use them.
- What is a function and how do you use functions.
- What is the difference between a declaration and a definition of a function.
- What is a prototype.
- Scope of variables.
- What are the gcc flags
-Wall -Werror -pedantic -Wextra -std=gnu89
. - What are header files and how to use them with
#include
.
- What are nested loops and how to use them.
- What is a function and how do you use functions.
- What is the difference between a declaration and a definition of a function.
- What is a prototype.
- Scope of variables.
- What are the gcc flags
-Wall -Werror -pedantic -Wextra -std=gnu89
. - What are header files and how to use them with
#include
.
- What are pointers and how to use them.
- What are arrays and how to use them.
- What are the differences between pointers and arrays.
- How to use strings and how to manipulate them.
- Scope variables.
- What are pointers and how to use them.
- What are arrays and how to use them.
- What are the differences between pointers and arrays.
- How to use strings and how to manipulate them.
- Scope variables.
- What are pointers and how to use them
- What are multidimensional arrays and how to use them
- What are the most common C standard library functions to manipulate strings
- What is recursion
- How to implement recursionIn what situations you should implemet recursion
- In what situations you shouldn't implement recursion
- What is static library, how does it work, how to create one, and how to use it
- Basic usage of
ar
,ranlib
,nm
.
- How to use arguments passed to your program
- What are two prototypes of main that you know of, and in which case do you use one or the other
- How to use attribute((unused)) or (void) to compile function with unused variables or parameters
- What is the difference between automatic and dynamic allocation
- What is
malloc
andfree
and how to use them - Why and when use
malloc
- How to use
valgrind
to check for memory leak
- How to use the
exit
function - What are the functions
calloc
andrealloc
from the standard library and how to use them
- What are macros and how to use them
- What are the most common predefined macros
- How to include guard your header files
- What are structures, when, why and how to use them
- How to use
typedef
- What are function pointers and how to use them
- What does a function pointer exactly hold
- Where does a function pointer point to in the virtual memory
- What are variadic functions
- How to use
va_start
,va_arg
andva_end
macros - Why and how to use the
const
type qualifier
- When and why using linked lists vs arrays
- How to build and use linked lists
- How to use linked lists
- How to manipulate bits and use bitwise operators
- What are file descriptors
- What are the 3 standard file descriptors, what are their purpose and what are their POSIX names
- How to use the I/O system calls open, close, read and write
- What are and how to use the flags O_RDONLY, O_WRONLY, O_RDWR
- What are file permissions, and how to set them when creating a file with the open system call
- What is a system call
- What is the difference between a function and a system call
- What is a doubly linked list
- How to use doubly linked lists
- Understand and know how to implement the various operations (deletion, insertion, etc) with doubly linked lists
- What is a dynamic library, how does it work, how to create one, and how to use it
- What is the environment variable
$LD_LIBRARY_PATH
and how to use it - What are the differences between static and shared libraries
- Basic usage
nm
,ldd
,ldconfig
- What makes a good hash function
- What is a hash table, how do they work and how to use them
- What is a collision and what are the main ways of dealing with collisions in the context of a hash table
- What are the advantages and drawbacks of using hash tables
- What are the most common use cases of hash tables