Skip to content

deanrobin333/alx-low_level_programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ALX LOW LEVEL PROGRAMMING


Table of Contents


Author Details

Project

0

  • 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 and putchar
  • 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

1

  • 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 with printf
  • 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

2

  • 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

3

  • What is debugging
  • What are some methods of debugging manually
  • How to read the error messages

4

  • 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

5

  • 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

6

  • 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

7

  • 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

8

  • What is recursion
  • How to implement recursion
  • In what situations you should implement recursion
  • In what situations you shouldn’t implement recursion

9

  • What is a static library, how does it work, how to create one, and how to use it
  • Basic usage of ar, ranlib, nm

10

  • 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

11

  • What is the difference between automatic and dynamic allocation
  • What is malloc and free and how to use them
  • Why and when use malloc
  • How to use valgrind to check for memory leak

12

  • How to use the exit function
  • What are the functions calloc and realloc from the standard library and how to use them

13

  • What are macros and how to use them
  • What are the most common predefined macros
  • How to include guard your header files

14

  • What are structures, when, why and how to use them
  • How to use typedef

15

  • 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

16

  • What are variadic functions
  • How to use va_start, va_arg and va_end macros
  • Why and how to use the const type qualifier

17

  • 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.

18

  • When and why using linked lists vs arrays
  • How to build and use linked lists

19

  • How to use linked lists
  • Start to look for the right source of information without too much help

20

  • Look for the right source of information without too much help
  • How to manipulate bits and use bitwise operators

21

  • 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 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

22

  • 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

23

  • 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

24

  • 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

25

  • 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

26

  • 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

27

  • 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

28

  • 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

29

  • 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

30

  • 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

More Info

  • 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))

31



Dean Robin Otsyeno - [email protected]

About

Learning the C Language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages