Each folder in this repository illustrates an essential concept of programming, specific to the C programming language. The file names reference the concepts (i.e. pointers, recursion, malloc, free, structures, function pointers, variadic functions, linked lists, etc) Inside these folders are files containing bash scripts and functions around that particular concept. Some functions are re-creations of functions found in the C standard libraries (i.e. _strcpy, _strlen, etc).
- Language: C
- OS: Ubuntu 14.04 LTS
- Compiler: gcc 4.8.4
- Style guidelines: Betty style
The low level curriculum focuses on the understanding of how programming languages and UNIX systems work - "what is going on under the hood."
This allows you to optimize and debug your programs. The curriculum focuses on algorithms and data structures.
Project | Description |
---|---|
0x00-hello_world | Intro to C, GCC compilation, and the Implementation of main & print functions |
0x01-variables_if_else_while | Loops and Conditionals: if, else, while and boolean & arithmetic operators |
0x02-functions_nested_loops | The use of Functions & Nested Loops and Implementation of Header Files and Variable Scoping |
0x03-debugging | Intro to Debugging: read error messages and handle them |
0x04-more_functions_nested_loops | Understand 2D planes with nested loops & Understand the difference between defining a function vs declaring a function |
0x05-pointers_arrays_strings | The use of String Standard Library functions with pointers: pointers vs. arrays |
0x06-pointers_arrays_strings | String Manipulation |
0x07-pointers_arrays_strings | Multidimensional arrays with double pointers: change, traverse, and search for strings |
0x08-recursion | Recursion in C and implementing best practice by using math functions and string manipulation |
0x09-static_libraries | Create your own Static Library and its usage |
0x0A-argc_argv | Command line arguments and its implementation |
0x0B-malloc_free | Intro to Memory Management and the use of Valgrind, & the use of malloc function to concatonate strings |
0x0C-more_malloc_free | Management of memory & Implementation of Valgrind |
0x0D-preprocessor | The use of Macros for readable constants & implementation of headers |
0x0E-structures_typedef | The use of structs in C with their functionality |
0x0F-function_pointers | Function Pointers & its use in Dynamic Programming |
0x10-variadic_functions | Functions that can pass a variable amount of arguments |
0x12-singly_linked_lists | Introduction to data structures and singly linked lists & Implementation in string manipulation |
0x13-more_singly_linked_lists | Nodes: How to Retrieve, Insert, and Delete |
0x14-bit_manipulation | Bitwise Operators & Its implementation in the bitwise values of a number |
Imane J.
Email me on i.jalal@aui.ma
Follow me on Linkedin
You are always welcome to contribute.
- Fork this repository.
- Do your desired changes.
- Make a pull request.