C Programming
The systems foundation behind high-performance AI software and runtime intuition.
- Modules
- 12
- Lessons
- 173
- Labs
- 0
- Hours
- 35
Guide
Build a mental model of memory, compilation, pointers, and low-level program behavior.
Open lessonRead
Start with the plain-English model before syntax or formulas.
Run
Open examples and labs when the concept needs motion.
Check
Use practice and progress to close the loop before moving on.
Ship
Turn modules into projects and certificates you can show.
Follow a guided syllabus.
Start from fundamentals, revisit any module, and keep a clear path toward projects and certificates.
- 01Open module
Introduction To C
12 lessons2 hrFinish this module able to use Introduction To C as part of real C Programming work.
- 02Open module
Basic Syntax
18 lessons3 hrFinish this module able to use Basic Syntax as part of real C Programming work.
- 03Open module
Control Flow
15 lessons2 hrFinish this module able to use Control Flow as part of real C Programming work.
- 04Open module
Functions
12 lessons2 hrFinish this module able to use Functions as part of real C Programming work.
- 05Open module
Arrays
12 lessons2 hrFinish this module able to use Arrays as part of real C Programming work.
- 06Open module
Pointers
15 lessons3 hrFinish this module able to use Pointers as part of real C Programming work.
- 07Open module
Strings
14 lessons3 hrFinish this module able to use Strings as part of real C Programming work.
- 08Open module
Structures And Unions
18 lessons4 hrFinish this module able to use Structures And Unions as part of real C Programming work.
- 09Open module
File Handling
15 lessons4 hrFinish this module able to use File Handling as part of real C Programming work.
- 10Open module
Dynamic Memory
15 lessons3 hrFinish this module able to use Dynamic Memory as part of real C Programming work.
- 11Open module
Preprocessor
12 lessons3 hrFinish this module able to use Preprocessor as part of real C Programming work.
- 12Open module
Advanced Topics
15 lessons3 hrFinish this module able to use Advanced Topics as part of real C Programming work.
Instructor notes and source guide
šÆ Complete C Programming Learning Path
Welcome to your comprehensive C programming journey! This repository is structured to take you from beginner to advanced level with hands-on practice.
š How to Use This Repository
Each module contains multiple topics, and each topic has 3 files:
README.md- Complete theoretical explanation with detailed conceptsexamples.c- Working code examples demonstrating the conceptsexercises.c- Practice problems for you to solve
Learning Workflow:
š Read README.md ā š Study examples.c ā āļø Complete exercises.c
šļø Module Structure
š Module 1: Introduction to C
| Topic | Description |
|---|---|
| 01_History_and_Features | Origins of C, ANSI C, features and advantages |
| 02_Structure_of_C_Program | Main function, sections, basic program anatomy |
| 03_Compilation_Process | Preprocessing, compilation, assembly, linking |
| 04_IDEs_and_Compilers | GCC, Clang, Code::Blocks, VS Code setup |
š Module 2: Basic Syntax
| Topic | Description |
|---|---|
| 01_Data_Types | int, float, double, char, void, size modifiers |
| 02_Variables_and_Constants | Declaration, initialization, const, #define |
| 03_Input_Output | printf, scanf, format specifiers, buffering |
| 04_Operators | Arithmetic, relational, logical, bitwise, assignment |
| 05_Typecasting | Implicit/explicit conversion, type promotion |
| 06_Comments_and_Documentation | Single-line, multi-line, documentation practices |
š Module 3: Control Flow
| Topic | Description |
|---|---|
| 01_If_Else | if, if-else, else-if ladder, nested conditions |
| 02_Switch_Case | switch statement, case, default, fall-through |
| 03_Loops | for, while, do-while loops, loop control |
| 04_Break_Continue_Goto | Loop control statements, goto usage |
| 05_Nested_Loops | Nested loop patterns, complexity analysis |
š Module 4: Functions
| Topic | Description |
|---|---|
| 01_Function_Basics | Declaration, definition, calling, return types |
| 02_Parameters_and_Arguments | Pass by value, pass by reference, arrays |
| 03_Recursion | Base case, recursive calls, stack usage |
| 04_Scope_and_Storage_Classes | auto, static, extern, register, scope rules |
š Module 5: Arrays
| Topic | Description |
|---|---|
| 01_One_Dimensional_Arrays | Declaration, initialization, access, operations |
| 02_Multi_Dimensional_Arrays | 2D/3D arrays, matrix operations |
| 03_Passing_Arrays_to_Functions | Array decay, pointer notation |
| 04_Character_Arrays_and_Strings | C-strings, null terminator, string handling |
š Module 6: Pointers
| Topic | Description |
|---|---|
| 01_Introduction_to_Pointers | Pointer basics, declaration, dereferencing |
| 02_Pointers_and_Arrays | Array-pointer relationship, pointer arithmetic |
| 03_Pointers_and_Functions | Pass by reference, returning pointers |
| 04_Pointer_to_Pointer | Double pointers, dynamic 2D arrays |
| 05_Function_Pointers | Callbacks, function pointer arrays |
š Module 7: Strings
| Topic | Description |
|---|---|
| 01_String_Basics | String declaration, initialization, literals |
| 02_String_Functions | strlen, strcpy, strcat, strcmp, etc. |
| 03_String_Manipulation | Tokenizing, searching, advanced operations |
| 04_String_Arrays | Array of strings, command-line args |
š Module 8: Structures and Unions
| Topic | Description |
|---|---|
| 01_Structure_Basics | Declaration, initialization, accessing members |
| 02_Nested_Structures | Structures within structures, complex types |
| 03_Array_of_Structures | Managing collections of structured data |
| 04_Pointers_to_Structures | Arrow operator, dynamic structures |
| 05_Unions | Shared memory, type punning, variants |
| 06_Bit_Fields | Compact data storage, hardware registers |
š Module 9: File Handling
| Topic | Description |
|---|---|
| 01_File_Basics | FILE pointer, fopen, fclose, modes |
| 02_Reading_Files | fgetc, fgets, fscanf, fread |
| 03_Writing_Files | fputc, fputs, fprintf, fwrite |
| 04_Binary_Files | Binary mode, struct serialization |
| 05_Random_Access | fseek, ftell, rewind, file positioning |
š Module 10: Dynamic Memory Allocation
| Topic | Description |
|---|---|
| 01_Memory_Concepts | Stack vs heap, memory layout, allocation |
| 02_Malloc_and_Free | malloc, free, memory management |
| 03_Calloc_and_Realloc | calloc, realloc, dynamic resizing |
| 04_Memory_Leaks_and_Debugging | Valgrind, common errors, best practices |
| 05_Dynamic_Data_Structures | Linked lists, dynamic arrays |
š Module 11: Preprocessor Directives
| Topic | Description |
|---|---|
| 01_Macros_and_Defines | #define, object-like/function-like macros |
| 02_Conditional_Compilation | #if, #ifdef, #ifndef, platform-specific code |
| 03_File_Inclusion | #include, header guards, include paths |
| 04_Advanced_Macros | Variadic macros, stringification, concatenation |
| 05_Pragma_Directives | #pragma, compiler-specific directives |
š Module 12: Advanced Topics
| Topic | Description |
|---|---|
| 01_Command_Line_Arguments | argc, argv, argument parsing |
| 02_Bit_Manipulation | Bitwise operations, bit masking, flags |
| 03_Variable_Arguments | va_list, va_start, va_arg, va_end |
| 04_Error_Handling | errno, perror, assert, error strategies |
| 05_Multi_File_Projects | Header files, separate compilation, make |
š ļø Setup Instructions
Installing GCC on Linux:
sudo apt update
sudo apt install build-essential
Installing GCC on Windows:
- Download MinGW from https://www.mingw-w64.org/
- Add to PATH environment variable
Installing GCC on macOS:
xcode-select --install
Compiling and Running:
gcc filename.c -o output
./output
š Progress Tracker
Use this checklist to track your learning progress:
Module 1: Introduction to C
- 01_History_and_Features
- 02_Structure_of_C_Program
- 03_Compilation_Process
- 04_IDEs_and_Compilers
Module 2: Basic Syntax
- 01_Data_Types
- 02_Variables_and_Constants
- 03_Input_Output
- 04_Operators
- 05_Typecasting
- 06_Comments_and_Documentation
Module 3: Control Flow
- 01_If_Else
- 02_Switch_Case
- 03_Loops
- 04_Break_Continue_Goto
- 05_Nested_Loops
Module 4: Functions
- 01_Function_Basics
- 02_Parameters_and_Arguments
- 03_Recursion
- 04_Scope_and_Storage_Classes
Module 5: Arrays
- 01_One_Dimensional_Arrays
- 02_Multi_Dimensional_Arrays
- 03_Passing_Arrays_to_Functions
- 04_Character_Arrays_and_Strings
Module 6: Pointers
- 01_Introduction_to_Pointers
- 02_Pointers_and_Arrays
- 03_Pointers_and_Functions
- 04_Pointer_to_Pointer
- 05_Function_Pointers
Module 7: Strings
- 01_String_Basics
- 02_String_Functions
- 03_String_Manipulation
- 04_String_Arrays
Module 8: Structures and Unions
- 01_Structure_Basics
- 02_Nested_Structures
- 03_Array_of_Structures
- 04_Pointers_to_Structures
- 05_Unions
- 06_Bit_Fields
Module 9: File Handling
- 01_File_Basics
- 02_Reading_Files
- 03_Writing_Files
- 04_Binary_Files
- 05_Random_Access
Module 10: Dynamic Memory Allocation
- 01_Memory_Concepts
- 02_Malloc_and_Free
- 03_Calloc_and_Realloc
- 04_Memory_Leaks_and_Debugging
- 05_Dynamic_Data_Structures
Module 11: Preprocessor Directives
- 01_Macros_and_Defines
- 02_Conditional_Compilation
- 03_File_Inclusion
- 04_Advanced_Macros
- 05_Pragma_Directives
Module 12: Advanced Topics
- 01_Command_Line_Arguments
- 02_Bit_Manipulation
- 03_Variable_Arguments
- 04_Error_Handling
- 05_Multi_File_Projects
š” Tips for Success
- Type the code yourself - Don't copy-paste
- Experiment - Modify examples to see what happens
- Debug errors - Learning to fix bugs is crucial
- Practice daily - Consistency beats intensity
- Build projects - Apply what you learn
Happy Coding! š