Each directory contains the low level projects and code that I wrote during my time at Holberton. More detailed and specific READMEs are located in each folder. The focus of these projects were to master computer science concepts and to practice the theory behind C, algorithms, and basic data structures. There is info and trivia questions that I go over in each directory.
I wrote my own printf function with Nicole Swanson. This project had restrictions regarding the use of several functions and libraries, so my partner and I had to write our own functions that behaved similar to their standard counterparts. All of these files had to compile and work together to function as a printf substitute. This project challenged us when we were learning about string manipulation and memory management.
This project was created by Jinzi Zhang and I. It is a simple version of the sh shell. All the outputs and exit statuses should return the same as sh's. This project focused on memory, sys calls, and pointers to pointers. Like the project above, there were limitations
Directory | Description |
---|---|
0x00-hello_world |
The basics of C, standard I/O and the compiling process. Link to a blog post included |
0x01-variables_if_else_while |
More scripts that manipulate the preprocesser of gcc for specific outputs. Another blog post link is included. The focus was mainly on conditions and logic |
0x02-functions_nested_loops |
Loops in loops in loops. Some fibonnaci problems. |
0x03-more_functions_nested_loops |
More loops and in depth |
0x04-pointers_arrays_strings |
Recreate basic built-in functions of the string.h library |
0x05-pointers_arrays_strings |
More practice with pointers, arrays, and strings |
0x06-pointers_arrays_strings |
Even more projects that reinforced the concepts |
0x07-recursion |
Recursion problems, scripts, and projects |
0x08-static_libraries |
Working with and creating my own static libraries. Blog post included |
0x09-argc_argv |
Programs that deal with arguments. No more int main(void) |
0x0A-malloc_free |
Learned memory allocation and valgrind |
0x0B-more_malloc_free |
Extra functions that deal with memory management |
0x0C-preprocessor |
Problem set that focused on headers, MACROS, and abusing the preprocessor |
0x0D-structures_typedef |
Project that introcuded me to C structures and freeing all their attributes |
0x0E-function_pointers |
Projects that go over manipulating pointers, derefrencing, and memory addresses |
0x0F-variadic_functions |
Infinite possible arguments... va_stuff projects |
0x10-holberton_printf |
Project 10 was the capstone printf project |
0x11-singly_linked_lists |
Linked list versus arrays. Building and using linked lists |
0x12-more_singly_linked_lists |
Higher difficulty projects that dealt with strutures and singly linked lists |
0x13-bit_manipulation |
Bitwise manipulation scripts and functions |
0x14-file_io |
File input and output descriptors, system calls, permissions |
0x15-holberton_shell |
Project 15 was the capstone shell project |
0x16-doubly_linked_lists |
Doubly linked lists and manipulation of them |
0x17-dynamic_libraries |
Understanding dynamic libraries and a blog post on Linkedin |
0x18-stacks_queues_lifo_fifo |
Used submodules and worked with stacks and queues |
0x19-hash_tables |
Hash tables and functions |
0x1A-sorting_algorithms |
Practiced sorting algorithms and Big O |
0x1B-makefiles |
Project used to understand Makefiles and their primary uses |
0x1C-binary_trees |
Learned binary trees and concepts |
0x1D-search_algorithms |
Review search algorithms and big O |
- Language: Bash, C90
- Operating System: Ubuntu 14.04 LTS (Trusty64)
- Style: Holberton Betty
- Compiler: gcc 4.8.4 with flags -Wall -Werror -Wextra -Wpedantic
- Version Control: Git