ML Systems
⚑

C++

The performance track for learners who care about inference engines, tooling, and systems code.

Modules
11
Lessons
189
Labs
0
Hours
29
Next Step

Guide

Understand modern C++ well enough to read, write, and reason about fast production systems.

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 Guide

Instructor notes and source guide

4 min read18 headings

πŸš€ 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

  1. Follow the modules in order - Each module builds upon previous concepts
  2. Read the theory files - Understand the concepts before coding
  3. Run the examples - Compile and execute each example to see how it works
  4. Complete the exercises - Practice makes perfect
  5. 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/

TopicDescription
01_IntroductionWhat is C++, compilation process, first program
02_Syntax_And_StructureProgram structure, statements, blocks
03_Input_Outputcin/cout, formatting, file streams basics
04_Variables_And_Data_TypesPrimitives, constants, scope rules
05_OperatorsArithmetic, logical, bitwise, precedence
06_Control_Flowif/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/

TopicDescription
01_ArraysFixed-size arrays, multidimensional arrays
02_VectorsDynamic arrays, vector operations
03_StringsC-strings, std::string, manipulation
04_Enums_Structs_UnionsUser-defined types, enum class, POD structs
05_Type_Castingstatic_cast, dynamic_cast, const_cast, reinterpret_cast

MODULE 3: FUNCTIONS (Week 4)

03_Functions/

TopicDescription
01_Function_BasicsDeclaration, definition, calling conventions
02_ParametersPass by value, reference, pointer, default args
03_Function_OverloadingSame name, different signatures
04_RecursionSelf-calling functions, base cases
05_Inline_LambdaInline optimization, lambda expressions

MODULE 4: POINTERS & MEMORY (Weeks 5-6)

04_Pointers_Memory/

TopicDescription
01_PointersAddresses, dereferencing, pointer arithmetic
02_ReferencesAliases, reference vs pointer
03_Dynamic_Memorynew/delete, memory leaks, RAII intro
04_Smart_Pointersunique_ptr, shared_ptr, weak_ptr

MODULE 5: OOP BASICS (Weeks 7-9)

05_OOP_Basics/

TopicDescription
01_ClassesClass definition, objects, member functions
02_EncapsulationAccess specifiers, getters/setters
03_InheritanceBase/derived classes, protected members
04_PolymorphismVirtual functions, overriding, vtable
05_Operator_OverloadingCustom operators for user types
06_Rule_Of_Five_RAIIDestructor, copy/move semantics, resource management
07_Friends_FunctorsFriend functions/classes, callable objects

MODULE 6: ADVANCED OOP (Week 10)

06_Advanced_OOP/

TopicDescription
01_Abstract_ClassesPure virtual functions, interfaces
02_Virtual_InheritanceDiamond problem solution
03_Object_RelationshipsComposition, aggregation, association

MODULE 7: TEMPLATES (Weeks 11-12)

07_Templates/

TopicDescription
01_Function_TemplatesGeneric functions
02_Class_TemplatesGeneric classes
03_Advanced_TemplatesVariadic templates, SFINAE, concepts

MODULE 8: STL (Weeks 13-15)

08_STL/

TopicDescription
01_Containersvector, list, deque, map, set, unordered_*
02_IteratorsCategories, operations, custom iterators
03_Algorithmssort, find, transform, accumulate, etc.

MODULE 9: ADVANCED TOPICS (Week 16)

09_Advanced_Topics/

TopicDescription
01_File_HandlingFile streams, text/binary I/O
02_Exceptionstry/catch/throw, custom exceptions, RAII
03_Modern_CppC++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/

TopicDescription
01_Multithreadingthreads, mutex, condition_variable, async/future
02_NetworkingSockets, TCP/UDP, client-server
03_Design_PatternsCreational, structural, behavioral patterns
04_GraphicsSFML basics, game loop, sprites

MODULE 11: BUILD TOOLS & TESTING (Week 21)

11_Build_Tools_Testing/

TopicDescription
01_CMakeCross-platform build system, CMakeLists.txt
02_DebuggingGDB commands, breakpoints, memory inspection
03_Unit_TestingGoogle Test framework, assertions, fixtures

πŸ“‹ Each Topic Contains

FilePurpose
README.mdTheory, concepts, ASCII diagrams, reference guide
examples.cppWorking code demonstrations
exercises.cppPractice problems with answer keys

🎯 Learning Tips

  1. Type the code yourself - Don't copy-paste, muscle memory matters
  2. Experiment - Modify examples and see what happens
  3. Debug actively - Learn to read error messages
  4. Build projects - Apply concepts in real scenarios
  5. 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! πŸŽ‰