Skip to content

Latest commit

 

History

History
188 lines (146 loc) · 8.42 KB

File metadata and controls

188 lines (146 loc) · 8.42 KB

Tutorial_AwesomeModernCPP

中文 | English

C++ License Stars Issues Build Docs

A systematic modern C++ tutorial -- from foundational syntax to embedded practice, from the standard library in depth to concurrent programming, with compilable code examples for every concept


Highlights

  • Systematic Learning Path -- 8 volumes from beginner to advanced, each with clear prerequisites, building progressively
  • Practice-Driven -- Every concept comes with a compilable CMake project, not isolated code snippets
  • Multi-Platform Coverage -- STM32 / ESP32 / RP2040 embedded practice, going beyond desktop
  • Tag Navigation -- Browse articles by topic, C++ standard, difficulty, platform, and more
  • Online Reading -- MkDocs documentation site with search and navigation

Content Architecture

graph LR
    V1["Volume 1 Fundamentals"] --> V2["Volume 2 Modern Features"]
    V2 --> V3["Volume 3 Std Library"] & V4["Volume 4 Advanced"] & V5["Volume 5 Concurrency"] & V6["Volume 6 Performance"] & V7["Volume 7 Engineering"]
    V2 --> V8["Volume 8 Domain Apps"]
    V8 --> E["Embedded"] & N["Networking"] & G["GUI"] & D["Data"] & A["Algorithms"]
Loading

Tutorial Structure

Volume Topic Articles Difficulty Status
1 C++ Fundamentals -- types, control flow, functions, pointers, classes, template basics 49 beginner Completed
2 Modern C++ Features -- move semantics, smart pointers, constexpr, Lambda 35-40 intermediate In Progress
3 Standard Library In Depth -- containers, iterators, algorithms, strings, allocators 40-50 intermediate Planned
4 Advanced Topics -- Concepts, Ranges, coroutines, modules, template metaprogramming 50-60 advanced Planned
5 Concurrent Programming -- thread primitives, atomic operations, lock-free programming, async I/O 25-30 advanced Planned
6 Performance Optimization -- CPU cache, SIMD, reading assembly, benchmarking 18-22 advanced Planned
7 Software Engineering Practices -- CMake, testing, static analysis, DevOps 30-35 intermediate Planned
8 Domain Applications -- embedded / networking / GUI / data storage / algorithms 80-100 intermediate In Progress
- Compilation & Linking In Depth -- preprocessing, assembly, linking, debug symbols 10+ intermediate Completed
- Capstone Projects -- hand-rolled STL, mini HTTP server, embedded OS - advanced Planned

Learning Paths

flowchart TD
    subgraph PathA["Path A -- C and Embedded Experience"]
        A1["Volume 2: Modern C++ Features"] --> A2["Volume 8: Embedded Development"]
    end
    subgraph PathB["Path B -- C++ Experience"]
        B1["Volume 8: Fundamentals Review"] --> B2["Platform Tutorials"] --> B3["RTOS Practice"]
    end
    subgraph PathC["Path C -- Both"]
        C1["Jump to any topic of interest"]
    end
    subgraph PathD["Path D -- Complete Beginner"]
        D1["Volume 1: C++ Fundamentals (incl. C crash course)"] --> D2["Volume 2: Modern C++ Features"]
    end
    Start(["Your starting point?"]) -->|"C + Embedded"| PathA
    Start -->|"C++ Experience"| PathB
    Start -->|"Both"| PathC
    Start -->|"No experience"| PathD

    style PathA fill:#dbeafe,stroke:#3b82f6,color:#1e3a5f
    style PathB fill:#dcfce7,stroke:#22c55e,color:#14532d
    style PathC fill:#fff7ed,stroke:#f97316,color:#7c2d12
    style PathD fill:#f3e8ff,stroke:#a855f7,color:#581c87
Loading

Quick Start

git clone https://github.com/Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP.git
cd Tutorial_AwesomeModernCPP
./scripts/mkdocs_dev.sh install   # Create venv and install dependencies
./scripts/mkdocs_dev.sh serve     # Build and start local preview
# Visit http://127.0.0.1:8000
More developer tools
Script Purpose
mkdocs_dev.sh install Create virtual environment and install MkDocs dependencies
mkdocs_dev.sh serve Build and start local preview server
mkdocs_dev.sh build Production static site build
mkdocs_dev.sh clean Clean build artifacts
mkdocs_dev.sh reset Rebuild virtual environment from scratch
setup_precommit.sh Install pre-commit hooks
validate_frontmatter.py Validate article frontmatter
check_links.py Check internal link validity
check_nav_reachability.py Check chapter navigation completeness
analyze_frontmatter.py Analyze tutorial statistics
build_examples.py Compile all CMake example projects
check_quality.py Content quality checks

Branch Overview

Branch Purpose Status
main Primary development branch Active
archive/legacy_20260415 Pre-restructuring archive Read-only
gh-pages Auto-deployed documentation site Auto-generated

Project directory structure
Tutorial_AwesomeModernCPP/
├── documents/                  # Tutorial Markdown files
│   ├── vol1-fundamentals/      # Volume 1: C++ Fundamentals (ch00-ch12 + C crash course)
│   ├── vol2-modern-features/   # Volume 2: Modern C++ Features
│   ├── vol3-standard-library/  # Volume 3: Standard Library In Depth
│   ├── vol4-advanced/          # Volume 4: Advanced Topics
│   ├── vol5-concurrency/       # Volume 5: Concurrent Programming
│   ├── vol6-performance/       # Volume 6: Performance Optimization
│   ├── vol7-engineering/       # Volume 7: Software Engineering Practices
│   ├── vol8-domains/           # Volume 8: Domain Applications
│   │   ├── embedded/           #   Embedded Development
│   │   ├── networking/         #   Network Programming
│   │   ├── gui-graphics/       #   GUI and Graphics
│   │   ├── data-storage/       #   Data Storage
│   │   └── algorithms/         #   Algorithms and Data Structures
│   ├── compilation/            # Compilation & Linking In Depth
│   ├── projects/               # Capstone Projects
│   └── index.md                # Tutorial home page
├── code/                       # Example code
├── scripts/                    # Developer tool scripts
├── todo/                       # Content planning and progress tracking
└── mkdocs.yml                  # MkDocs site configuration

Contributing

We welcome contributions of all kinds! Please read CONTRIBUTING.md for details.

Quick workflow: Fork --> Feature branch --> Commit --> Push --> Pull Request

If you have questions, feel free to open an issue at GitHub Issues.


Acknowledgements

This project references the following excellent resources:


License & Contact


Learn modern C++ systematically, from fundamentals to practice