- Author Details
- Projects
- 0. 0x00. C - Hello, World
- 1. 0x01. C - Variables, if, else, while
- 2. 0x02. C - Functions, nested loops
- 3. 0x03. C - Debugging
- 4. 0x04. C - More functions, more nested loops
- 5. 0x05. C - Pointers, arrays and strings
- 6. 0x06. C - More pointers, arrays and strings
- 7. 0x07. C - Even more pointers, arrays and strings
- 8. 0x08. C - Recursion
- 9. 0x09. C - Static libraries
- 10. 0x0A. C - argc, argv
- 11. 0x0B. C - malloc, free
- 12. 0x0C. C - More malloc, free
- 13. 0x0D. C - Preprocessor
- 14. 0x0E. C - Structures, typedef
- 15. 0x0F. C - Function pointers
- 16. 0x10. C - Variadic functions
- 17. 0x11. C - printf
- 18. 0x12. C - Singly linked lists
- 19. 0x13. C - More singly linked lists
- 20. 0x14. C - Bit manipulation
- 21. 0x15. C - File I/O
- 22. 0x16. C - Simple Shell
- 23. 0x17. C - Doubly linked lists
- 24. 0x18. C - Dynamic libraries
- 25. 0x19. C - Stacks, Queues - LIFO, FIFO (monty)
- 26. 0x1A. C - Hash tables
- 27. 0x1B. C - Sorting algorithms & Big O
- 28. 0x1C. C - Makefiles
- 29. 0x1D. C - Binary trees
- 30. 0x1E. C - Search Algorithms
- 31.
- Dean Robin Otsyeno - [email protected]
- Why C programming is awesome
- Who invented C
- Who are Dennis Ritchie, Brian Kernighan and Linus Torvalds
- What happens when you type
gcc main.c
- What is an entry point
- What is
main
- How to print text using
printf
,puts
andputchar
- How to get the size of a specific type using the unary operator
sizeof
- How to compile using
gcc
- What is the default program name when compiling with
gcc
- What is the official C coding style and how to check your code with
betty-style
- How to find the right header to include in your source code when using a standard library function
- How does the
main
function influence the return value of the program
- What are the arithmetic operators and how to use them
- What are the logical operators (sometimes called boolean operators) and how to use them
- What the the relational operators and how to use them
- What values are considered TRUE and FALSE in C
- What are the boolean operators and how to use them
- How to use the
if
,if ... else
statements - How to use comments
- How to declare variables of types
char
,int
,unsigned int
- How to assign values to variables
- How to print the values of variables of type
char
,int
,unsigned int
withprintf
- How to use the
while
loop - How to use variables with the
while
loop - How to print variables using
printf
- What is the
ASCII
character set - What are the purpose of the
gcc
flags-m32
and-m64
- 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 to use them with
#include
- What is debugging
- What are some methods of debugging manually
- How to read the error messages
- 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 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 of 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 of variables
- What are pointers to 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 recursion
- In what situations you should implement recursion
- In what situations you shouldn’t implement recursion
- What is a 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 functions 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
- The
printf
function is a very important and versatile function in the C programming language and being about to create your custom version of it will go a long way to enhance your understanding of the language. - The first secret to being able to complete this project successfully is to first get a solid understanding of the
printf
function itself, how it works and all the different ways in which it can be used.
- When and why using linked lists vs arrays
- How to build and use linked lists
- How to use linked lists
- Start to look for the right source of information without too much help
- Look for the right source of information without too much help
- How to manipulate bits and use bitwise operators
- Look for the right source of information online
- How to create, open, close, read and write files
- 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
andwrite
- 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
-
The famous Simple Shell project. This is one of the most anticipated project and also one that will challenge you a lot about everything you have learn so far:
- Basics of programming
- Basics of C
- Basics of thinking like an engineer
- Group work
- and Learning how to learn
- 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
- Start to look for the right source of information without too much help
- 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 do LIFO and FIFO mean
- What is a stack, and when to use it
- What is a queue, and when to use it
- What are the common implementations of stacks and queues
- What are the most common use cases of stacks and queues
- What is the proper way to use global variables
- What is a hash function
- 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
- At least four different sorting algorithms
- What is the Big O notation, and how to evaluate the time complexity of an algorithm
- How to select the best sorting algorithm for a given input
- What is a stable sorting algorithm
- What are
make
, Makefiles - When, why and how to use Makefiles
- What are rules and how to set and use them
- What are explicit and implicit rules
- What are the most common / useful rules
- What are variables and how to set and use them
- What is a binary tree
- What is the difference between a binary tree and a Binary Search Tree
- What is the possible gain in terms of time complexity compared to linked lists
- What are the depth, the height, the size of a binary tree
- What are the different traversal methods to go through a binary tree
- What is a complete, a full, a perfect, a balanced binary tree
- What is a search algorithm
- What is a linear search
- What is a binary search
- What is the best search algorithm to use depending on your needs
- You will be asked to write files containing big O notations. Please use this format:
O(1)
O(n)
O(n!)
- n*m ->
O(nm)
- n square ->
O(n^2)
- sqrt n ->
O(sqrt(n))
- log(n) ->
O(log(n))
- n * log(n) ->
O(nlog(n))
- …
Dean Robin Otsyeno - [email protected]