C++ Mastery Projects - Expanded Project Guides

Generated from: CPP_MASTERY_PROJECTS.md

Overview

This directory contains 13 comprehensive project guides for mastering C++ from first principles to systems-level expertise. Each project is designed to build deep understanding through hands-on implementation, progressively covering:

  • Memory Model & Object Lifetime - RAII, ownership, move semantics
  • The Type System - Static typing, type deduction, const correctness
  • Object-Oriented Programming - Encapsulation, polymorphism, Rule of Zero/Three/Five
  • Generic Programming - Templates, metaprogramming, concepts
  • Standard Library (STL) - Containers, algorithms, iterators, smart pointers
  • Modern C++ (C++11-23) - Move semantics, lambdas, coroutines, modules
  • Concurrency - Threads, synchronization, atomics, futures
  • Low-Level Control - Manual memory, bit manipulation, inline assembly

Project Index

# Project Difficulty Time Key Focus
1 Command-Line Calculator Beginner 1-2 weeks Parsing, recursion, basic syntax
2 Memory-Mapped File Reader Intermediate 1-2 weeks Virtual memory, system calls, pointers
3 Smart Pointer Implementation Advanced 2-3 weeks RAII, move semantics, atomics
4 Generic Container Library Advanced 3-4 weeks Templates, iterators, exception safety
5 Thread Pool Library Advanced 2-3 weeks Concurrency, synchronization, futures
6 JSON Parser Library Intermediate 2-3 weeks Parsing, std::variant, serialization
7 TCP Chat Server Advanced 2-3 weeks Sockets, I/O multiplexing, protocols
8 Simple Database Engine Expert 1-2 months B-trees, storage, ACID, WAL
9 2D Game Engine Expert 2-3 months ECS, graphics, real-time systems
10 C++ Compiler Frontend Master 3-6 months Lexing, parsing, type systems, LLVM
11 HTTP Server Framework Expert 1-2 months HTTP, async I/O, high performance
12 Template Metaprogramming Library Master 1-2 months TMP, constexpr, zero-cost abstractions
13 Operating System Kernel (Capstone) Master 6-12 months Bare metal, paging, scheduling

Learning Paths

Duration: 6-12 months

Phase 1: Core Syntax (1-2 months)
├── P01-command-line-calculator.md
└── P02-memory-mapped-file-reader.md

Phase 2: Modern C++ (2-3 months)
├── P03-smart-pointer-implementation.md
├── P04-generic-container-library.md
└── P05-thread-pool-library.md

Phase 3: Applications (2-3 months)
├── P06-json-parser-library.md
└── P07-tcp-chat-server.md

Phase 4: Systems (3-6 months)
├── P08-simple-database-engine.md
├── P09-2d-game-engine.md
├── P10-cpp-compiler-frontend.md
└── P11-http-server-framework.md

Phase 5: Expert (1-2 months)
├── P12-template-metaprogramming-library.md
└── P13-operating-system-kernel.md

Path B: Systems Focus (For Experienced Programmers)

Duration: 4-8 months

Quick Foundation (2-4 weeks)
└── P03-smart-pointer-implementation.md  (Skip P01-P02)

Core Systems (2-3 months)
├── P08-simple-database-engine.md
├── P11-http-server-framework.md
└── P05-thread-pool-library.md

Advanced Systems (2-3 months)
├── P10-cpp-compiler-frontend.md
└── P13-operating-system-kernel.md

Template Mastery (1 month)
└── P12-template-metaprogramming-library.md

Path C: Game Development Focus

Duration: 4-6 months

Essentials (1-2 months)
├── P03-smart-pointer-implementation.md
├── P04-generic-container-library.md
└── P05-thread-pool-library.md

Game Engine (2-3 months)
└── P09-2d-game-engine.md

Performance (1 month)
└── P12-template-metaprogramming-library.md

Prerequisites

Essential Knowledge

  • Basic programming concepts (variables, loops, functions)
  • Understanding of computer memory (stack vs heap concept)
  • Command-line familiarity
  • Basic understanding of compilation

Development Environment

  • Compiler: GCC 11+, Clang 14+, or MSVC 2022
  • Build System: CMake 3.20+ or Make
  • Debugger: GDB or LLDB
  • Editor: VS Code with C++ extension, or CLion, or Vim/Emacs
# Ubuntu/Debian
sudo apt install build-essential cmake gdb

# macOS
xcode-select --install
brew install cmake

# Verify installation
g++ --version  # or clang++ --version
cmake --version

How to Use These Guides

For Each Project

  1. Read the entire guide first - Understand the scope and challenges
  2. Complete the self-assessment - Ensure prerequisites are met
  3. Attempt implementation independently - Use hints progressively
  4. Test thoroughly - Verify expected outputs match
  5. Review and refactor - Apply learnings from the guide
  6. Answer interview questions - Solidify understanding

Study Tips

  • Build before reading solutions - Struggle is where learning happens
  • Use a debugger - Step through code to understand behavior
  • Read the book chapters - Theory supports practice
  • Document your code - Explaining reinforces understanding
  • Compare with professional implementations - After completing

Essential Resources

Books

| Book | Author | Best For | |——|——–|———-| | “C++ Primer Plus” | Stephen Prata | Beginners | | “The C++ Programming Language” | Bjarne Stroustrup | Reference | | “Effective Modern C++” | Scott Meyers | C++11/14/17 | | “C++ Concurrency in Action” | Anthony Williams | Threading | | “C++ Templates: The Complete Guide” | Vandevoorde & Josuttis | Templates | | “Game Engine Architecture” | Jason Gregory | Games | | “Database Internals” | Alex Petrov | Storage | | “Engineering a Compiler” | Cooper & Torczon | Compilers | | “Operating Systems: Three Easy Pieces” | Arpaci-Dusseau | OS |

Online

Project Difficulty Legend

Level Description Time Commitment
Beginner Basic syntax, fundamental concepts 1-2 weeks
Intermediate Deeper understanding, some complexity 2-3 weeks
Advanced Complex concepts, multiple systems 2-4 weeks
Expert Systems-level, high complexity 1-3 months
Master Industry-level challenge 3-12 months

Start with Project 1 and work your way up. Each project builds on skills from previous ones. By the end, you’ll understand not just how to use C++, but why it’s designed the way it is.