
Explaining the course level, its contents, and the targeted students
Show some examples for the important C language basics never been introduced in any Arabic course before and show the overview of the course map to get the advanced level
When C language was created, what C language is, what C language can do and what the properties of C language
What standards mean, why standards are useful, what the history of C language standards is and what standards we're going to use
What the numeral system is, what the most known numeral systems are, what the decimal, binary, the octal and the hexadecimal systems are, and how to convert from all systems to decimal system and vise versa
How to convert between octal and hexadecimal systems to binary system and vice versa, also convert from octal system to hexadecimal and vice versa
Compilation process vs interpretation process, what the phases and steps of compilation process and the kinds of errors in C language
What the most known C language compilers are, the differences between IDE and text editor and what are the compilers, IDEs and text editors we're going to use in our course
Download vc_redist, oracle virtualBox and linux virtual machine, take a look at codeblocks, geany and vscode interfaces, how to create a new project and how to open an existing project
Download and install codeblocks for windows, also download and install microsoft visual studio and take an overview for both interfaces and how to create and build a new project
The C program code structure, a quick look at preprocessor, main function, variables declaration, assignment, initialization, comment types, printf function and return function
What the type is, the data types in C language, identifiers and its specifications
How characters, digits and special character are read by your computer, and what ASCII Table is
The literals of any value, Integer literals, floating-point literals, character literals and string literals
Integer value types, signed and unsigned types, char type, short type, int type, long type, long long type, _Bool type, min and max values for each type
The integer value overflow, signed overflow, unsigned overflow, why unsigned overflow is defined in C standards, while signed overflow is undefined in C standards, the negative integer value binary representation, and the difference between sign magnitude, one's complement and two's complement
The real types, float type, double type, long double, floating-point notation, scientific notation, how to print real types, real types macros, infinity, nan and suffix
Why floating-point type is not always accurate, and what is the floating-point type binary representation
What complex types are, using complex types on GCC and Clang what are the mathematic operation of complex types and how can we convert complex value to real value
Complex types on mvs, new types, new functions and new arithmetic operations
How to use const type qualifier in your code, the difference between const variable and literal, a quick look at object-like macro and how to use typedef to define an alias type
Cast between types, explicit cast, implicit cast and type promotion
How to print all data types using format specifiers, how to use scanf function to get inputs from the user using the console, and explaining printf function and scanf function
What are Field width, precision, flags and using format specifiers with scanf function
The difference between the expression and the statement, what is operator, the kinds of operators and unary arithmetic operators
Using increment and decrement operators and undefined behavior of increment and decrement on gcc, clang and MVS
Using addition, subtraction, multiplication, division, modulus operators and how to use modulus with real types
Using relational operators, with loops and condition
Using logical operator to check more than one relational expression in one expression
Using bitwise operators to edit values by manipulating their bits or their binary values
Using bitwise operators as an alternative to logical operators, the difference between short-circuit evaluation and lazy evaluation and using bitwise xor in condition
Using simple assignment, compound assignment, the difference between them, the valid and invalid usage of both
Getting the size of values, variables, and expressions, why we should use parentheses around the sizeof operator operand, the format specifiers for printing the sizeof on windows and linux using GCC and MVS, the expression size on different platforms, the sizeof true and false values and using the size_t type
Assigning value in and without parentheses, the comma operator order of evaluation and the difference between comma operator and comma separator
Using ternary operator in condition, ternary operator as right value, as a return value and using nested ternary operator
What is precedence, precedence vs evaluation, using wrong operators means wrong precedence and wrong results, and associativity or evaluation direction
What is control flow, what control flow consists of, what is condition, using if statement, else if statement, and else statement
Learning complex condition using logical operators and bitwise operators and difference between both kinds of operators
Using if statement, else if statement and else statement inside any of this statemets
Practicing simple condition, complex condition and nested if, using scanf function to enter the variables values
Introduction to switch statement (case) and it's components switch, case label, break and default label
How to create nested switch statements and some examples using different types of case values
Using goto statement as loop with many examples, why we shouldn't use goto statement, and introduction to random values using and srand
Why we need loops, structure of loop, while loop, entry condition loop, do while loop,
for loop, how to write a for loop, incrementing, decrementing the counter and reversed for loop
Using inner loop inside outer loop and examples
Using break to end the loop with condition, and using continue to skip an iteration and starting a new one
Why we need arrays, arrays initialization, declaration, sizeof and length
How to use designated initializers to define some array elements with specific values, using typedef to define an alias type of an array, and using scanf function to enter the array values
Defining 2d array, designated initializers, printing it's values, using scanf function to enter the values, and how to get the 2d array size
Using VLA on different compilers (gcc, clang, mvs), entering the length and the values of an array in runtime, and defining an alias type of VLA
1d array sort, 2d array random values, pascal's triangle, and magic square
How your code allocated in memory, what time are pointers, why we need pointers, printing the pointer value, and the pointer size
How to access the values of pointed to variable, and how const affects the pointer value and the pointer dereference
How to create a pointer points to another pointer, how to access the pointed to pointer address and value, how to access the pointed to variable address and value, and how const affects the pointer to pointer behavior
The differences between pointers and arrays, how we can use pointers instead of arrays, shallow copy, using the array name as index, using index as array name and ptrdiff_t type
What string is, array of character, null character, binary representation of string, strlen function vs sizeof, defining char array string, accessing string indices
char pointer as string, accessing string indices, char array vs char pointer,
Array of strings, size of an array of strings, editing an array of char pointers, and editing char pointers
function declared in ctype.h, character classification functions(isalnum, isalpha, isupper, islower, isdigit, isgraph...) and character manipulation functions (toupper, tolower)
Talking about string manipulation functions, strcpy, strncpy, strcat and strncat
Talking about string examination functions, strcmp, strncmp, strlen, strchr, strrchr, strstr, strpbrk, strspn, strcspn and strtok
Talking about array manipulation functions, memchr, memset, memcmp, memcpy and memmove, and explaining overlapping pointers
Talking about numeric formats functions, atoi, atof, strtol and strtof
What void pointer means, how to cast void pointer to object pointer(int, double, char, string and array of strings)
Talking about, memory structure, memory allocation on stack vs memory allocation on heap, dynamic memory allocation functions (malloc, calloc, realloc, free), and shallow copy vs deep copy
Improper pointer declaration, double free pointer, memory leaks, lost address, wild pointers, and dangling pointers
What compound literals mean, anonymous 1d array, anonymous 2d array, anonymous dynamic array, and anonymous char array
What are user-defined types, why we use them, defining printing enumeration, redeclaration of enumeration, creating an object of enumeration, size of enumeration
What is structure, defining a structure, how structure works, assigning values to objects, designated initializers, how to define objects and size of structure, comparing two objects
How to define pointers to a structure and how to access members by pointer
Defining a nested structure, accessing inner structure, outer object , inner object, allocating dynamic object and assigning initializing values
Incomplete structure & forward reference, shallow copy vs deep copy, and flexible array member
What is union, how to define an object of a union, how to define a pointer of a union, assigning values to members, defining nested union, accessing inner union, size of union, structure vs union
What alignment is, padding bytes, how alignment work, alignment size, alignment of array, alignment specifiers, alignas, alignof, offsetof
What bit-fields are, how bit-fields works, bit-fields alignment, bit-fields types, max and min values of bit-fields, wrong uses of bit-fields
أكبر كورس تعليمي في لغة السي جمعت فيه محتوى كل الكورسات العربية والأجنبية المجانية والمدفوعة لكل المستويات من مستوى المبتدئين إلى المستوى المتقدم والتدريبات العملية، محتوى الكورس أكثر من 44 ساعة من المحاضرات المصورة أقدمها في حوالي 110 فيديو، بالإضافة إلى أكثر من 1500 شريحة عرض تضم الشرح بالكود والصور والكتابة لتسهيل وصول المعلومة إلى الدارس، وستكون الدراسة شاملة .. على أكثر من كومبيلور وأكثر من نظام، حتى يكون الدارس ملما بكل أوجه الاختلاف بين الأنظمة وبعضها أو بين كمبيلور وكمبيلور آخر، وستكون دراسة تفصيلية لا تترك مجالا لمعلومة إلا وذكرتها بالشرح والكود، لكل من يرغب في التعلم الدقيق والصحيح ومعرفة كل التفاصيل التي لم يتم شرحها من قبل
Course Contents
Introduction
- Quick Intro.
- Why you should take this course?
- C Language When, What and Why.
- C Standards and History.
- Numeral Systems 01.
- Numeral Systems 02.
- Compilation Process.
- Compiler, Ide and Text editor.
- Download linux Virtual Machine.
- Download Codeblocks and MVS for windows.
Basics
- The C program Structure.
- Data Types.
- ASCII Table.
- Literals.
- Integer Types.
- Overflow and Promotion.
- Real Types.
- Floating-point Types representation.
- Complex Types.
- const … typedef.
- Type Conversion.
- Format Specifiers.
Operators
- Introduction to Operators and Unary Arithmetic Operators.
- Increment and decrement operators.
- Binary Arithmetic Operators.
- Relational Operators.
- Logical Operators.
- Bitwise Operators.
- Short-circuit Evaluation vs lazy Evaluation.
- Assignment Operator.
- sizeof Operator.
- Comma Operator.
- Ternary Operator.
- Operator Precedence and Associativity.
Condition
- Introduction to Condition.
- Using Logical and Bitwise Operators.
- Nested if.
- Examples with scanf
- switch case and nested switch case
Loops
- while and do while Loops.
- for loop.
- goto
- break and continue.
- Nested loops.
Arrays
- Introduction to Arrays.
- Initialization, sizeof and typedef.
- Tow-dimension Arrays.
- Variable Length Array (VLA).
Pointers
- Introduction to Pointers.
- Dereferencing.
- Using const with Pointers.
- Pointer to Pointer.
- Pointers vs Arrays.
String
- Introduction to String and char Array.
- char pointer.
- Array of Strings.
- String Libraries 01.
- String Libraries 02.
- String Libraries 03.
- String Libraries 04.
- String Libraries 05.
Advanced pointers
- void pointers
- Dynamic memory allocation
- Compound literals
User's Defined Types
Enumerations
Structure
- Introduction to structure.
- Defining Objects and Pointers of structure.
- Nested structure.
- Incomplete structure and Forward Referencing.
- Shallow Copy vs Deep Copy.
- Flexible Array Member (FAM).
Union
- Introduction to union.
- Nested union
- Differences Between Struct and Union.
Alignment and Bit-fields
- Alignment.
- Alignment Specifiers.
- Bit-fields
Functions
- Introduction to Functions.
- Function Definition.
- Function Declaration.
- Functions with Compound Types.
- Functions with User-Defined Types
- Identifiers Scopes.
- Storage duration.
- Passing By Value vs Passing By Reference.
- Recursion.
- Pointer to Function.
- Variadic Function.
- Math Functions 01.
- Math Functions 02.
Void Pointers.
Modules
Preprocessors
- Introduction to Preprocessors.
- Stingzing, concatenation Condition Directives
- Generic, variadic and hygienic macros.
- Predefined macros, Pragmas and Diagnostics.
Time. Locales and Wide Characters
- Time.
- Locales.
- Wide Characters.
Threads
- Introduction to Threading.
- Race condition, Mutex, Condition Variables, Carriers and Semaphore.
- Atomics
Input/Output
- Introduction to IO.
- Reading Files.
- Writing Files.
- Position Indicator.
- Buffer.
- Receiving and Showing Data.
- Handling Files.
- Managing Errors.
Regular Expressions
- Introduction to Regular Expressions.
- C Language Regular Expressions.
Debugging
- Debugging using GDB
- Debugging using Microsoft Visual Studio
- Debugging using Valgirnd
CMake
- Introduction to CMake
- CMake Project features
- CMake Script features
- CTest & CPack
More Advanced Topics
- Algorithms (qsort and bsearch).
- setjmp and longjmp.
- Command Line Arguments.
- Random Numbers.
- Assertion.
- Signals.
- Program Termination.