Skip to content
/ cpp23m Public

Master Modern C++ with Real Projects Learn C++23 the professional way with real-world projects, modern tools like CMake and vcpkg, and industry-standard practices. Perfect for beginners, students, and professionals aiming to write future-proof, high-performance C++ code.

Notifications You must be signed in to change notification settings

rutura/cpp23m

Repository files navigation

C++23 Fundamentals with Projects & Algorithms

Stop learning C++ the wrong way. Master it like professionals do - with real projects, modern tools, and industry practices.

This repository contains the complete source code and projects for the comprehensive C++23 Fundamentals course available on Udemy.

πŸš€ Why This is the ONLY C++ Course You Need

Don't waste time with outdated tutorials and toy examples. This course teaches C++ the way it's actually used in industry:

  • Real-World Projects, Not Toy Examples
  • Professional Tools Used in Industry
  • Modern C++ Features (C++11 through C++23)
  • Industry-Standard Practices
  • Comprehensive Project Structure

🎯 What Sets This Course Apart

πŸ’ͺ Beyond Basic Tutorials

  • Build structured, multi-file projects from day one
  • Learn professional development workflows used in industry
  • Master modern build systems and package management
  • Deep dive into debugging and much more!

πŸ› οΈ Professional Tool Stack

  • Modern CMake for build management
  • vcpkg for package management
  • Industry-standard debugging tools
  • Third-party library integration
  • Complete IDE setup and optimization

πŸ“š What You'll Master

1. Complete C++ Evolution

  • Master features from C++11 through C++23
  • Work with and improve legacy codebases
  • Write future-proof, modern C++ code
  • Understand the "why" behind each feature

2. Professional Development

  • Build systems with Modern CMake
  • Package management with vcpkg
  • Debugging workflows
  • Code organization and best practices

3. Real-World Applications

  • GUI development with SFML/ftxui
  • Modern file handling with std::filesystem
  • Game development fundamentals
  • Data structures and algorithms

4. Advanced Concepts

  • Smart pointers and RAII
  • Move semantics optimization
  • Memory management
  • STL containers and algorithms

🎯 Perfect For

  • Complete Beginners wanting to learn C++ the right way
  • Self-Taught Developers struggling with best practices
  • Students & CS Majors seeking practical skills
  • Professional Developers from Python/Java/C#
  • Game Developers needing C++ expertise
  • Systems Programmers requiring performance
  • Anyone Serious about professional C++ development

πŸ’Ό Industry-Ready Skills

Learn what employers actually need:

  • βœ… Modern C++ (C++11 through C++23)
  • βœ… Professional build systems
  • βœ… Package management
  • βœ… Real project structure
  • βœ… Debugging techniques
  • βœ… Best practices & patterns

πŸ“Š Course Stats

  • ⭐ 4.8/5 Rating
  • πŸ“š 60.5 hours of content
  • 🎯 103 comprehensive lectures
  • πŸ’» 18 hands-on exercises
  • πŸ† Certificate of completion
  • πŸ“± Mobile & TV access
  • πŸ”„ Lifetime updates

"Not just another C++ courseβ€”it's your complete pathway to professional C++ development."

Getting Started

Follow our comprehensive environment setup guide below to get started with modern C++ development across any platform.

C++23 Masterclass Development Environment Setup

Quick Setup Links:

This guide explains how to set up your development environment for the C++23 Masterclass course across different platforms.

🐳 Why Docker? Using Docker provides a consistent, pre-configured environment that works identically across all platforms. It eliminates "works on my machine" issues and gives you instant access to the latest C++ tools without complex setup. Perfect for both beginners and professionals!

Common Requirements

All platforms require these core tools:

  • CMake (3.28.0 or higher)
  • Ninja build system
  • Git
  • vcpkg package manager
  • Visual Studio Code with extensions:
    • C++ extensions (either Microsoft C++ or Clangd + CodeLLDB)
    • CMake Tools
    • CMake
    • Docker (optional)
    • Dev Containers (optional)

Windows Setup

  1. Install Visual Studio 2022

    • Download from Visual Studio Website
    • Select "Desktop development with C++" workload
    • This provides the MSVC compiler (cl.exe)
  2. Install CMake

    • Download latest version from CMake's official site
    • Ensure CMake is added to system PATH during installation
    • Verify with cmake --version
  3. Install Ninja

    • Download via WinLibs
    • Add Ninja to system PATH
    • Verify with ninja --version
  4. Install Git

    • Download from Git's official site
    • Add to system PATH during installation
    • Configure user name and email
  5. Install vcpkg

    git clone https://github.com/microsoft/vcpkg.git C:\vcpkg
    cd C:\vcpkg
    .\bootstrap-vcpkg.bat
    • Set VCPKG_ROOT environment variable to C:\vcpkg

Linux Setup (Ubuntu 24.04)

  1. Install Clang 19

    wget https://apt.llvm.org/llvm.sh
    chmod +x llvm.sh
    sudo ./llvm.sh 19 all

    Configure as default compiler:

    sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-19 100
    sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-19 100
  2. Install CMake

    # Download and install latest CMake
    wget https://github.com/Kitware/CMake/releases/download/v3.31.6/cmake-3.31.6-linux-x86_64.sh
    chmod +x cmake-3.31.6-linux-x86_64.sh
    sudo ./cmake-3.31.6-linux-x86_64.sh --prefix=/opt/cmake-3.31.6 --skip-license
    sudo update-alternatives --install /usr/bin/cmake cmake /opt/cmake-3.31.6/bin/cmake 100
  3. Install Ninja

    sudo apt-get update
    sudo apt-get install wget unzip
    wget https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip
    unzip ninja-linux.zip
    sudo mv ninja /usr/bin/ninja
    sudo chmod +x /usr/bin/ninja
  4. Install vcpkg

    git clone https://github.com/microsoft/vcpkg.git ~/vcpkg
    cd ~/vcpkg
    ./bootstrap-vcpkg.sh

    Add to ~/.bashrc:

    export VCPKG_ROOT=~/vcpkg
    export PATH=$VCPKG_ROOT:$PATH

macOS Setup

  1. Install Xcode Command Line Tools

    xcode-select --install
  2. Install CMake

  3. Install Ninja

    brew install ninja
  4. Install vcpkg

    git clone https://github.com/microsoft/vcpkg.git ~/vcpkg
    cd ~/vcpkg
    ./bootstrap-vcpkg.sh

    Add to ~/.zshrc:

    export VCPKG_ROOT="$HOME/vcpkg"
    export PATH="$HOME/vcpkg:$PATH"

Docker Setup (Alternative for any platform)

If you prefer a containerized environment or need access to the latest C++ features:

  1. Install Docker

    • Windows/Mac: Install Docker Desktop
    • Linux: Install via package manager
    sudo apt install docker    # Ubuntu
    sudo dnf install docker   # Fedora
    sudo pacman -S docker    # Arch
  2. Pull and Run Container

    docker pull dgakwaya/gcc-clang:latest
    docker run -it --name cpp_dev -v <path_to_code>:/workspace dgakwaya/gcc-clang:latest

    The container includes:

    • GCC 14.2.0
    • Clang 19.1.7
    • CMake 3.31.6
    • Ninja 1.12.1
    • vcpkg
    • GDB 13.1 and LLDB 19.1.7
  3. Connect VS Code

    • Install Remote-Containers extension
    • Click green button in bottom-left corner
    • Select "Attach to Running Container"
    • Choose cpp_dev container
    • Open /workspace in the container

Verification

After installation, verify your setup:

# Windows
cl.exe /?
cmake --version
ninja --version
vcpkg --version

# Linux/macOS
clang --version
cmake --version
ninja --version
vcpkg --version

Project Structure

All projects in this course follow this basic structure:

project/
  β”œβ”€β”€ CMakeLists.txt
  β”œβ”€β”€ CMakePresets.json
  β”œβ”€β”€ main.cpp
  β”œβ”€β”€ utilities.ixx (or .h/.cpp for header projects)
  β”œβ”€β”€ vcpkg.json
  └── build/

Debugging Setup

To enable debugging in your projects, you'll need to configure a launch.json file in VS Code. The file should point to your project's compiled binary. The default binary paths vary by operating system and compiler. Here are the typical paths (replace "ProjectName" with your actual project name):

  • Windows (MSVC): build/cl/Debug/ProjectName.exe
  • Linux/macOS (Clang): build/linux-clang/Debug/ProjectName
  • Docker (Clang): build/linux-clang/Debug/ProjectName

Detailed instructions for configuring launch.json are provided in the course videos for each project.

About

Master Modern C++ with Real Projects Learn C++23 the professional way with real-world projects, modern tools like CMake and vcpkg, and industry-standard practices. Perfect for beginners, students, and professionals aiming to write future-proof, high-performance C++ code.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published