Docs
Unit Testing
π Complete C++ Learning Path: Beginner to Advanced
Welcome to your comprehensive C++ learning journey! This structured curriculum will take you from absolute beginner to advanced C++ developer.
π How to Use This Repository
- β’Follow the modules in order - Each module builds upon previous concepts
- β’Read the theory files - Understand the concepts before coding
- β’Run the examples - Compile and execute each example to see how it works
- β’Complete the exercises - Practice makes perfect
- β’Build the projects - Apply what you've learned
π§ Compilation Commands
# Basic compilation
g++ filename.cpp -o output
# With C++17 standard (recommended)
g++ -std=c++17 filename.cpp -o output
# With C++20 standard (for modern features)
g++ -std=c++20 filename.cpp -o output
# With debugging symbols
g++ -std=c++17 -g filename.cpp -o output
# With warnings (always use this!)
g++ -std=c++17 -Wall -Wextra filename.cpp -o output
π Course Structure
MODULE 1: FOUNDATIONS (Weeks 1-2)
01_Foundations/
| Topic | Description |
|---|---|
| 01_Introduction | What is C++, compilation process, first program |
| 02_Syntax_And_Structure | Program structure, statements, blocks |
| 03_Input_Output | cin/cout, formatting, file streams basics |
| 04_Variables_And_Data_Types | Primitives, constants, scope rules |
| 05_Operators | Arithmetic, logical, bitwise, precedence |
| 06_Control_Flow | if/else, switch, loops (for, while, do-while) |
| 07_Preprocessor_Namespaces | #include, #define, macros, namespace usage |
MODULE 2: WORKING WITH DATA (Week 3)
02_Working_With_Data/
| Topic | Description |
|---|---|
| 01_Arrays | Fixed-size arrays, multidimensional arrays |
| 02_Vectors | Dynamic arrays, vector operations |
| 03_Strings | C-strings, std::string, manipulation |
| 04_Enums_Structs_Unions | User-defined types, enum class, POD structs |
| 05_Type_Casting | static_cast, dynamic_cast, const_cast, reinterpret_cast |
MODULE 3: FUNCTIONS (Week 4)
03_Functions/
| Topic | Description |
|---|---|
| 01_Function_Basics | Declaration, definition, calling conventions |
| 02_Parameters | Pass by value, reference, pointer, default args |
| 03_Function_Overloading | Same name, different signatures |
| 04_Recursion | Self-calling functions, base cases |
| 05_Inline_Lambda | Inline optimization, lambda expressions |
MODULE 4: POINTERS & MEMORY (Weeks 5-6)
04_Pointers_Memory/
| Topic | Description |
|---|---|
| 01_Pointers | Addresses, dereferencing, pointer arithmetic |
| 02_References | Aliases, reference vs pointer |
| 03_Dynamic_Memory | new/delete, memory leaks, RAII intro |
| 04_Smart_Pointers | unique_ptr, shared_ptr, weak_ptr |
MODULE 5: OOP BASICS (Weeks 7-9)
05_OOP_Basics/
| Topic | Description |
|---|---|
| 01_Classes | Class definition, objects, member functions |
| 02_Encapsulation | Access specifiers, getters/setters |
| 03_Inheritance | Base/derived classes, protected members |
| 04_Polymorphism | Virtual functions, overriding, vtable |
| 05_Operator_Overloading | Custom operators for user types |
| 06_Rule_Of_Five_RAII | Destructor, copy/move semantics, resource management |
| 07_Friends_Functors | Friend functions/classes, callable objects |
MODULE 6: ADVANCED OOP (Week 10)
06_Advanced_OOP/
| Topic | Description |
|---|---|
| 01_Abstract_Classes | Pure virtual functions, interfaces |
| 02_Virtual_Inheritance | Diamond problem solution |
| 03_Object_Relationships | Composition, aggregation, association |
MODULE 7: TEMPLATES (Weeks 11-12)
07_Templates/
| Topic | Description |
|---|---|
| 01_Function_Templates | Generic functions |
| 02_Class_Templates | Generic classes |
| 03_Advanced_Templates | Variadic templates, SFINAE, concepts |
MODULE 8: STL (Weeks 13-15)
08_STL/
| Topic | Description |
|---|---|
| 01_Containers | vector, list, deque, map, set, unordered_* |
| 02_Iterators | Categories, operations, custom iterators |
| 03_Algorithms | sort, find, transform, accumulate, etc. |
MODULE 9: ADVANCED TOPICS (Week 16)
09_Advanced_Topics/
| Topic | Description |
|---|---|
| 01_File_Handling | File streams, text/binary I/O |
| 02_Exceptions | try/catch/throw, custom exceptions, RAII |
| 03_Modern_Cpp | C++11/14/17/20/23 features including: |
| β’ Concepts, Ranges, Coroutines | |
| β’ std::format, std::span, std::expected | |
| β’ Three-way comparison (spaceship operator) | |
| β’ Modules, consteval, deducing this |
MODULE 10: EXPERT TOPICS (Weeks 17-20)
10_Expert_Topics/
| Topic | Description |
|---|---|
| 01_Multithreading | threads, mutex, condition_variable, async/future |
| 02_Networking | Sockets, TCP/UDP, client-server |
| 03_Design_Patterns | Creational, structural, behavioral patterns |
| 04_Graphics | SFML basics, game loop, sprites |
MODULE 11: BUILD TOOLS & TESTING (Week 21)
11_Build_Tools_Testing/
| Topic | Description |
|---|---|
| 01_CMake | Cross-platform build system, CMakeLists.txt |
| 02_Debugging | GDB commands, breakpoints, memory inspection |
| 03_Unit_Testing | Google Test framework, assertions, fixtures |
π Each Topic Contains
| File | Purpose |
|---|---|
README.md | Theory, concepts, ASCII diagrams, reference guide |
examples.cpp | Working code demonstrations |
exercises.cpp | Practice problems with answer keys |
π― Learning Tips
- β’Type the code yourself - Don't copy-paste, muscle memory matters
- β’Experiment - Modify examples and see what happens
- β’Debug actively - Learn to read error messages
- β’Build projects - Apply concepts in real scenarios
- β’Review regularly - Spaced repetition helps retention
π οΈ Prerequisites
- β’A C++ compiler (g++, clang++, or MSVC)
- β’A text editor or IDE (VS Code recommended)
- β’Basic computer literacy
π¦ Special Compilation Flags
# For Multithreading (Module 10)
g++ -std=c++17 -pthread file.cpp -o file
# For Graphics/SFML (Module 10)
sudo apt install libsfml-dev
g++ -std=c++17 file.cpp -lsfml-graphics -lsfml-window -lsfml-system -o file
# For Unit Testing with Google Test (Module 11)
g++ -std=c++17 file.cpp -lgtest -lgtest_main -pthread -o test
# For C++20/23 features (Module 9)
g++ -std=c++20 file.cpp -o file
g++ -std=c++23 file.cpp -o file # Requires GCC 13+ or Clang 17+
π Progress Tracker
- β’ Module 1: Foundations (7 topics)
- β’ Module 2: Working With Data (5 topics)
- β’ Module 3: Functions (5 topics)
- β’ Module 4: Pointers & Memory (4 topics)
- β’ Module 5: OOP Basics (7 topics)
- β’ Module 6: Advanced OOP (3 topics)
- β’ Module 7: Templates (3 topics)
- β’ Module 8: STL (3 topics)
- β’ Module 9: Advanced Topics (3 topics)
- β’ Module 10: Expert Topics (4 topics)
- β’ Module 11: Build Tools & Testing (3 topics)
Total: 11 Modules, 47 Topics
πΊοΈ Visual Learning Path
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β C++ LEARNING ROADMAP β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β BEGINNER INTERMEDIATE ADVANCED β
β ββββββββ ββββββββββββ ββββββββ β
β β
β ββββββββββββ ββββββββββββ ββββββββββββ β
β βModule 1 β βModule 5 β βModule 9 β β
β βFoundationsββββββββββββΊβOOP BasicsββββββββββββΊβModern C++β β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ β
β β β β β
β βΌ βΌ βΌ β
β ββββββββββββ ββββββββββββ ββββββββββββ β
β βModule 2 β βModule 6 β βModule 10 β β
β βData TypesββββββββββββΊβAdv. OOP ββββββββββββΊβExpert β β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ β
β β β β β
β βΌ βΌ βΌ β
β ββββββββββββ ββββββββββββ ββββββββββββ β
β βModule 3 β βModule 7 β βModule 11 β β
β βFunctions ββββββββββββΊβTemplates ββββββββββββΊβBuild/Testβ β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββββββββ β
β β β β
β βΌ βΌ β
β ββββββββββββ ββββββββββββ β
β βModule 4 β βModule 8 β β
β βPointers ββββββββββββΊβSTL β β
β ββββββββββββ ββββββββββββ β
β β
β Estimated Time: 20-24 weeks (part-time study) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Let's begin your C++ journey! Start with 01_Foundations/01_Introduction/
Happy Coding! π