A comprehensive learning path covering C fundamentals through modern C++ — from memory layout and pointers to templates, RAII, and the STL. Suitable for first-time systems programmers and experienced developers alike.
§ SYLLABUS
- 01Compilation Model & Toolchain
Understand the compile-link-run cycle, header files vs source files, and how to use gcc/clang/MSVC from the command line.
- 02Types, Variables & Operators
Learn primitive data types (int, char, float, double), variable declaration, arithmetic and bitwise operators, and implicit type conversions.
- 03Control Flow
Master if/else, switch, for, while, do-while, break, and continue to direct program execution.
- 04Functions & Scope
Define and call functions, understand pass-by-value, local vs global scope, and function prototypes.
- 05C Basics Complete
You can write, compile, and run simple C programs with functions and control flow.
- 01Pointers & Addresses
Understand memory addresses, pointer declaration, dereferencing, pointer arithmetic, and NULL pointers.
- 02Arrays & C Strings
Work with fixed-size arrays, multidimensional arrays, and null-terminated character arrays for string handling.
- 03Dynamic Memory Allocation
Use malloc, calloc, realloc, and free to manage heap memory, and understand common pitfalls like leaks and dangling pointers.
- 04Memory Layout & Stack vs Heap
Visualize how a program's memory is organized into text, data, BSS, stack, and heap segments.
- 05Memory Management Proficient
You understand pointers, arrays, and manual memory management in C.
- 01Structs, Unions & Enums
Define composite data types with structs, understand unions for memory-overlapping fields, and use enums for named constants.
- 02File I/O
Read from and write to files using fopen, fread, fwrite, fprintf, and understand text vs binary modes.
- 03Preprocessor & Macros
Use #include, #define, #ifdef, and macro functions; understand their power and pitfalls compared to real functions.
- 04Multi-File Projects & Linking
Split code across multiple .c and .h files, use header guards, and understand external linkage and static linkage.
- 05Function Pointers & Callbacks
Pass functions as arguments, build dispatch tables, and implement callback patterns in C.
- 06C Language Mastery
You can build non-trivial, multi-file C programs with proper memory management.
- 01C to C++ Transition
Understand what C++ adds over C: references, function overloading, default arguments, namespaces, and the differences in compilation.
- 02Classes & Objects
Define classes with member variables and methods, understand access specifiers (public, private, protected), and the this pointer.
- 03Constructors, Destructors & RAII
Learn constructor overloading, initializer lists, destructors, and the RAII idiom for resource management.
- 04References & Operator Overloading
Use lvalue references as aliases, overload operators for custom types, and understand the rule of three.
- 05C++ Foundations Complete
You can write class-based C++ code with proper resource management.
- 01Inheritance & Polymorphism
Derive classes, use virtual functions for runtime polymorphism, understand vtables, and apply the override keyword.
- 02Abstract Classes & Interfaces
Define pure virtual functions, create interface-like abstract base classes, and design for extensibility.
- 03Exception Handling
Use try/catch/throw for error handling, understand exception safety guarantees, and know when exceptions are appropriate.
- 04C++ Casting & RTTI
Use static_cast, dynamic_cast, const_cast, and reinterpret_cast correctly; understand runtime type information.
- 05OOP Proficient
You can design and implement class hierarchies with proper polymorphism and error handling.
- 01Move Semantics & Rvalue References
Understand lvalues vs rvalues, move constructors, move assignment, and std::move for efficient resource transfer.
- 02Smart Pointers
Replace raw pointers with unique_ptr, shared_ptr, and weak_ptr to automate memory management and prevent leaks.
- 03Lambdas & Functional Patterns
Write inline closures with capture lists, use std::function, and apply functional patterns like map/filter with algorithms.
- 04auto, constexpr & Structured Bindings
Use type inference with auto, compile-time evaluation with constexpr/consteval, and structured bindings for cleaner code.
- 05Modern C++ Fluent
You write idiomatic modern C++ with move semantics, smart pointers, and lambdas.
- 01Function & Class Templates
Write generic code with templates, understand template instantiation, specialization, and common compile errors.
- 02STL Containers
Use vector, map, unordered_map, set, deque, and array; understand their performance characteristics and when to choose each.
- 03Iterators & Algorithms
Traverse containers with iterators, apply STL algorithms (sort, find, transform, accumulate), and use ranges (C++20).
- 04Variadic Templates & Concepts
Use parameter packs for flexible APIs and C++20 concepts to constrain template parameters with readable error messages.
- 05Generic Programming Proficient
You can write and use templates effectively and leverage the full STL.
- 01Build Systems (CMake / Make)
Configure builds with CMake or Make, manage dependencies, set compiler flags, and produce debug vs release builds.
- 02Debugging & Sanitizers
Use gdb/lldb for step-through debugging, and AddressSanitizer/Valgrind to detect memory errors and leaks.
- 03Concurrency & Multithreading
Create threads with std::thread, protect shared data with mutexes, use condition variables, and understand atomics and data races.
- 04Networking & Sockets
Understand BSD sockets, TCP/UDP basics, and write simple client-server programs in C/C++.
- 05Embedded & Low-Level C/C++
Apply C/C++ in resource-constrained environments: volatile, bitfields, memory-mapped I/O, and cross-compilation.
- 06C/C++ Practitioner
You can design, build, debug, and ship multi-file C/C++ projects with modern idioms and proper tooling.