Computer Systems
šŸ”§

C Programming

The systems foundation behind high-performance AI software and runtime intuition.

Modules
12
Lessons
173
Labs
0
Hours
35
Next Step

Guide

Build a mental model of memory, compilation, pointers, and low-level program behavior.

Open lesson

Read

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.

Course Path

Follow a guided syllabus.

Start from fundamentals, revisit any module, and keep a clear path toward projects and certificates.

  1. 01

    Introduction To C

    12 lessons2 hr

    Finish this module able to use Introduction To C as part of real C Programming work.

    Open module
  2. 02

    Basic Syntax

    18 lessons3 hr

    Finish this module able to use Basic Syntax as part of real C Programming work.

    Open module
  3. 03

    Control Flow

    15 lessons2 hr

    Finish this module able to use Control Flow as part of real C Programming work.

    Open module
  4. 04

    Functions

    12 lessons2 hr

    Finish this module able to use Functions as part of real C Programming work.

    Open module
  5. 05

    Arrays

    12 lessons2 hr

    Finish this module able to use Arrays as part of real C Programming work.

    Open module
  6. 06

    Pointers

    15 lessons3 hr

    Finish this module able to use Pointers as part of real C Programming work.

    Open module
  7. 07

    Strings

    14 lessons3 hr

    Finish this module able to use Strings as part of real C Programming work.

    Open module
  8. 08

    Structures And Unions

    18 lessons4 hr

    Finish this module able to use Structures And Unions as part of real C Programming work.

    Open module
  9. 09

    File Handling

    15 lessons4 hr

    Finish this module able to use File Handling as part of real C Programming work.

    Open module
  10. 10

    Dynamic Memory

    15 lessons3 hr

    Finish this module able to use Dynamic Memory as part of real C Programming work.

    Open module
  11. 11

    Preprocessor

    12 lessons3 hr

    Finish this module able to use Preprocessor as part of real C Programming work.

    Open module
  12. 12

    Advanced Topics

    15 lessons3 hr

    Finish this module able to use Advanced Topics as part of real C Programming work.

    Open module
Course Guide

Instructor notes and source guide

5 min read18 headings

šŸŽÆ 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:

  1. README.md - Complete theoretical explanation with detailed concepts
  2. examples.c - Working code examples demonstrating the concepts
  3. exercises.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

TopicDescription
01_History_and_FeaturesOrigins of C, ANSI C, features and advantages
02_Structure_of_C_ProgramMain function, sections, basic program anatomy
03_Compilation_ProcessPreprocessing, compilation, assembly, linking
04_IDEs_and_CompilersGCC, Clang, Code::Blocks, VS Code setup

šŸ“˜ Module 2: Basic Syntax

TopicDescription
01_Data_Typesint, float, double, char, void, size modifiers
02_Variables_and_ConstantsDeclaration, initialization, const, #define
03_Input_Outputprintf, scanf, format specifiers, buffering
04_OperatorsArithmetic, relational, logical, bitwise, assignment
05_TypecastingImplicit/explicit conversion, type promotion
06_Comments_and_DocumentationSingle-line, multi-line, documentation practices

šŸ“˜ Module 3: Control Flow

TopicDescription
01_If_Elseif, if-else, else-if ladder, nested conditions
02_Switch_Caseswitch statement, case, default, fall-through
03_Loopsfor, while, do-while loops, loop control
04_Break_Continue_GotoLoop control statements, goto usage
05_Nested_LoopsNested loop patterns, complexity analysis

šŸ“˜ Module 4: Functions

TopicDescription
01_Function_BasicsDeclaration, definition, calling, return types
02_Parameters_and_ArgumentsPass by value, pass by reference, arrays
03_RecursionBase case, recursive calls, stack usage
04_Scope_and_Storage_Classesauto, static, extern, register, scope rules

šŸ“˜ Module 5: Arrays

TopicDescription
01_One_Dimensional_ArraysDeclaration, initialization, access, operations
02_Multi_Dimensional_Arrays2D/3D arrays, matrix operations
03_Passing_Arrays_to_FunctionsArray decay, pointer notation
04_Character_Arrays_and_StringsC-strings, null terminator, string handling

šŸ“˜ Module 6: Pointers

TopicDescription
01_Introduction_to_PointersPointer basics, declaration, dereferencing
02_Pointers_and_ArraysArray-pointer relationship, pointer arithmetic
03_Pointers_and_FunctionsPass by reference, returning pointers
04_Pointer_to_PointerDouble pointers, dynamic 2D arrays
05_Function_PointersCallbacks, function pointer arrays

šŸ“˜ Module 7: Strings

TopicDescription
01_String_BasicsString declaration, initialization, literals
02_String_Functionsstrlen, strcpy, strcat, strcmp, etc.
03_String_ManipulationTokenizing, searching, advanced operations
04_String_ArraysArray of strings, command-line args

šŸ“˜ Module 8: Structures and Unions

TopicDescription
01_Structure_BasicsDeclaration, initialization, accessing members
02_Nested_StructuresStructures within structures, complex types
03_Array_of_StructuresManaging collections of structured data
04_Pointers_to_StructuresArrow operator, dynamic structures
05_UnionsShared memory, type punning, variants
06_Bit_FieldsCompact data storage, hardware registers

šŸ“˜ Module 9: File Handling

TopicDescription
01_File_BasicsFILE pointer, fopen, fclose, modes
02_Reading_Filesfgetc, fgets, fscanf, fread
03_Writing_Filesfputc, fputs, fprintf, fwrite
04_Binary_FilesBinary mode, struct serialization
05_Random_Accessfseek, ftell, rewind, file positioning

šŸ“˜ Module 10: Dynamic Memory Allocation

TopicDescription
01_Memory_ConceptsStack vs heap, memory layout, allocation
02_Malloc_and_Freemalloc, free, memory management
03_Calloc_and_Realloccalloc, realloc, dynamic resizing
04_Memory_Leaks_and_DebuggingValgrind, common errors, best practices
05_Dynamic_Data_StructuresLinked lists, dynamic arrays

šŸ“˜ Module 11: Preprocessor Directives

TopicDescription
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_MacrosVariadic macros, stringification, concatenation
05_Pragma_Directives#pragma, compiler-specific directives

šŸ“˜ Module 12: Advanced Topics

TopicDescription
01_Command_Line_Argumentsargc, argv, argument parsing
02_Bit_ManipulationBitwise operations, bit masking, flags
03_Variable_Argumentsva_list, va_start, va_arg, va_end
04_Error_Handlingerrno, perror, assert, error strategies
05_Multi_File_ProjectsHeader files, separate compilation, make

šŸ› ļø Setup Instructions

Installing GCC on Linux:

sudo apt update
sudo apt install build-essential

Installing GCC on Windows:

  1. Download MinGW from https://www.mingw-w64.org/
  2. 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

  1. Type the code yourself - Don't copy-paste
  2. Experiment - Modify examples to see what happens
  3. Debug errors - Learning to fix bugs is crucial
  4. Practice daily - Consistency beats intensity
  5. Build projects - Apply what you learn

Happy Coding! šŸš€