Build Real C++ Projects

Learn by building complete applications from scratch. Each project guides you step-by-step from fundamentals to advanced implementations.

Start Your Journey

Create a free account to track your progress and save your code

Filters

Difficulty:
Status:
Type:

Beginner Fundamentals

Beginner
~0.8h

My First C++ Program

Build your first complete C++ program step by step. Start with Hello World and progressively add variables, user input, and calculations to create a practical rectangle area calculator.

5 steps
What You'll Build:
A complete C++ program that interacts with users to calculate the area of a rectangle. You'll start with the classic Hello World program and progressively add new concepts until you have a fully functional calculator that demonstrates fundamental C++ programming skills.
Beginner Coming Soon
~1.3h

Number Guessing Game

Build a classic guess-the-number game from scratch in modern C++ with zero external dependencies. You generate a secret number with the <random> library, read player guesses from std::cin, and give higher or lower feedback inside a game loop until they win. A friendly first project that turns loops, conditionals, and input handling into something genuinely fun to play.

What You'll Build:
A working console game that picks a random secret number, counts your attempts, tells you whether each guess is too high or too low, and lets you play again without restarting.
Beginner Coming Soon
~1h

Console Calculator

Write a command-line calculator from scratch in modern C++ that evaluates arithmetic the user types in. You parse an operator and two operands, dispatch on the operation, and guard against division by zero, all with the standard library only. A focused introduction to parsing input and branching cleanly.

What You'll Build:
A command-line calculator that reads an expression such as 12 * 7, performs addition, subtraction, multiplication, and division on floating-point numbers, and loops for another calculation.
Beginner Coming Soon
~2h

To-Do List Manager

Create a persistent to-do list manager from scratch in modern C++ using only the standard library. You store tasks in a std::vector of structs, add and remove items from a menu-driven loop, and save everything to a text file so your list survives between runs. A hands-on lesson in collections and file persistence.

What You'll Build:
A menu-driven console app that lets you add tasks, mark them complete, delete them, list everything, and save and reload the whole list from a plain text file.
Beginner Coming Soon
~1.7h

Hangman

Implement the word-guessing game Hangman from scratch in modern C++ with zero external dependencies. You pick a hidden word, track guessed letters, redraw the masked word each round, and count remaining lives until the player wins or runs out. A great exercise in string manipulation and tracking game state.

What You'll Build:
A console Hangman game that hides a random word, reveals correctly guessed letters in place, tracks wrong guesses against a life counter, and announces a win or loss.
Beginner Coming Soon
~1.8h

Tic-Tac-Toe

Build a two-player Tic-Tac-Toe game from scratch in modern C++ using only the standard library. You represent the board as a small grid, alternate turns between players, validate moves, and check every win line after each play. A satisfying project for practising arrays, functions, and game logic.

What You'll Build:
A console Tic-Tac-Toe game for two players that draws a 3x3 board, accepts numbered moves, rejects illegal placements, and detects wins, blocks, and draws.
Beginner Coming Soon
~1.3h

Unit Converter

Write a flexible unit converter from scratch in modern C++ with zero external dependencies. You offer categories such as length, weight, and temperature, apply the right conversion formula, and print a neatly formatted result. A tidy project for practising functions, enums, and numeric formatting.

What You'll Build:
A menu-driven console converter that turns miles into kilometres, pounds into kilograms, Celsius into Fahrenheit, and more, printing results to a chosen number of decimal places.
Beginner Coming Soon
~2.5h

Text Adventure Game

Create a branching text adventure from scratch in modern C++ using only the standard library. You model rooms and their exits, parse simple typed commands, move the player through a map, and manage a small inventory. A story-driven way to practise structs, containers, and program state.

What You'll Build:
A playable text adventure where you type commands such as go north or take key to explore connected rooms, collect items into an inventory, and reach a winning room.
Beginner Coming Soon
~1.2h

Password Generator

Build a configurable password generator from scratch in modern C++ with zero external dependencies. You assemble a character pool from letters, digits, and symbols based on user options, then draw random characters with the <random> library to build a password of the requested length. A compact project centred on randomness and strings.

What You'll Build:
A command-line tool that generates a strong random password of a chosen length, letting you toggle uppercase, lowercase, digits, and symbols on or off.
Beginner Coming Soon
~2.2h

Flashcard Quiz Trainer

Write a flashcard quiz trainer from scratch in modern C++ using only the standard library. You load question-and-answer pairs from a file, shuffle the deck, quiz the user, and report a score at the end. A practical project for loading data, using containers, and shuffling with the random library.

What You'll Build:
A console study tool that reads flashcards from a text file, shuffles them, prompts you with each question, checks your answers, and shows a final score summary.
Beginner Coming Soon
~2.3h

Bank Account Simulator

Build a simple bank account simulator from scratch in modern C++ with zero external dependencies. You model accounts as structs, process deposits and withdrawals with balance checks, record a transaction history, and save it all to a file. A grounded introduction to modelling data and enforcing rules.

What You'll Build:
A menu-driven console app that opens accounts, handles deposits and withdrawals with overdraft protection, prints a running transaction log, and saves balances to a file.

Intermediate Building Skills

Intermediate Coming Soon
~5h

Terminal Text Editor

Build your own terminal text editor from scratch in modern C++ with zero external dependencies. Raw terminal mode, VT100 escape sequences, a text buffer, file I/O, incremental search, and syntax highlighting - the same foundations behind vim, nano, and kilo.

What You'll Build:
A working terminal text editor you can actually use: open a file, move around, edit, save, search incrementally, and see C++ syntax highlighted - all rendered with raw VT100 escape codes you write yourself, no curses, no libraries.
Intermediate Coming Soon
~4h

Terminal Snake

Build the arcade game Snake from scratch in modern C++ that runs entirely in your terminal with zero external dependencies. You put the terminal into raw mode for non-blocking input, drive a real-time game loop, grow the snake as it eats, and render every frame with VT100 escape sequences. A lively introduction to real-time input and timing.

What You'll Build:
A playable terminal Snake game with real-time arrow-key control, food spawning, a growing snake body, collision detection against walls and itself, and a live score.
Intermediate Coming Soon
~6h

JSON Parser

Write a compliant JSON parser from scratch in modern C++ using only the standard library. You tokenise the input, build a recursive-descent parser for objects, arrays, strings, numbers, and literals, and represent the document tree with std::variant. A rigorous exercise in parsing and modern value types.

What You'll Build:
A JSON parsing library that reads text into an in-memory value tree you can query and serialise back out, handling nested objects, arrays, escaped strings, and numeric edge cases.
Intermediate Coming Soon
~5h

Markdown to HTML Converter

Build a Markdown to HTML converter from scratch in modern C++ with zero external dependencies. You read Markdown line by line, recognise block elements such as headings, lists, and code fences, then handle inline formatting like bold, italics, and links before emitting valid HTML. A clean project for practising string processing and stateful parsing.

What You'll Build:
A command-line converter that reads a Markdown file and writes an HTML document, supporting headings, paragraphs, ordered and unordered lists, code blocks, links, and emphasis.
Intermediate Coming Soon
~6.5h

Huffman File Compressor

Implement a Huffman file compressor from scratch in modern C++ using only the standard library. You count byte frequencies, build a Huffman tree with a priority queue, assign variable-length codes, and write a packed bitstream that you can later decode back to the original file. A satisfying dive into trees, greedy algorithms, and bit-level I/O.

What You'll Build:
A command-line tool that compresses any file into a smaller Huffman-encoded format and decompresses it back to a byte-for-byte identical original.
Intermediate Coming Soon
~4.5h

PPM Image Editor

Build an image editor from scratch in modern C++ that reads and writes the simple PPM format with zero external dependencies. You load pixels into memory, apply filters such as grayscale, blur, and flip, and save the result, all without any imaging library. A visual project that makes buffers and algorithms tangible.

What You'll Build:
A command-line image editor that loads a PPM file, applies filters like grayscale, invert, box blur, and horizontal flip, and writes the edited image back to disk.
Intermediate Coming Soon
~7h

TCP Chat Server

Build a multi-client TCP chat server from scratch in modern C++ using POSIX sockets and the standard library only. You accept many connections, multiplex them with select or poll, and broadcast each message to every other participant. A focused introduction to network programming and event-driven I/O.

What You'll Build:
A TCP chat server that lets multiple clients connect at once, assigns each a nickname, and relays every message to all other connected users in real time.
Intermediate Coming Soon
~4h

Mini Grep

Write your own grep from scratch in modern C++ with zero external dependencies. You parse command-line flags, scan files or standard input line by line, match a pattern, and print results with optional line numbers and context. A practical project for command-line tooling and text search.

What You'll Build:
A command-line search tool that finds a pattern across one or more files or piped input, with flags for case-insensitive matching, line numbers, inverted matches, and recursive directory search.
Intermediate Coming Soon
~6.7h

Mini Shell

Build a working command-line shell from scratch in modern C++ using POSIX process APIs and the standard library. You read commands, tokenise them, launch programs with fork and execvp, and wire up pipes and redirection. A revealing project that shows how a shell really runs your programs.

What You'll Build:
An interactive shell that runs external commands, supports built-ins like cd and exit, chains programs with pipes, and redirects input and output to files.
Intermediate Coming Soon
~5.5h

Sudoku Solver and Generator

Implement a Sudoku solver and puzzle generator from scratch in modern C++ with zero external dependencies. You solve any valid board with backtracking, then generate fresh puzzles with a unique solution by removing clues carefully. A classic algorithms project centred on recursion and constraint checking.

What You'll Build:
A command-line program that solves a given 9x9 Sudoku via backtracking and generates new puzzles at chosen difficulty levels, each guaranteed to have exactly one solution.

Advanced Real-World Projects

Advanced
~4h

OpenGL 2D Blackhole Simulator v2

Build a 2D gravitational lensing simulator with OpenGL. Visualize light ray bending around a black hole using the Schwarzschild metric and numerical integration. (Updated version with geometric units and improved code organization)

16 steps Source files
What You'll Build:
An interactive 2D visualization showing light ray trajectories bending around a black hole. Watch as rays with different impact parameters either escape to infinity or spiral into the event horizon, demonstrating gravitational lensing in real-time.
Advanced Coming Soon
~10h

CHIP-8 Emulator

Build a full CHIP-8 emulator from scratch in modern C++ with zero external dependencies. You emulate the CPU registers, memory, stack, and timers, decode and execute every opcode, and render the monochrome display to the terminal. A deep dive into how a virtual machine fetches, decodes, and runs instructions.

What You'll Build:
A working CHIP-8 emulator that loads real ROMs, runs the full opcode set with accurate timing, draws sprites to a terminal-rendered display, and reads keypad input.
Advanced Coming Soon
~12h

Ray Tracer

Write a physically inspired ray tracer from scratch in modern C++ using only the standard library. You build a vector math foundation, cast rays through a virtual camera, intersect spheres and planes, and shade with diffuse, reflective, and shadow rays before writing a PPM image. A rewarding blend of maths, algorithms, and modern C++.

What You'll Build:
A command-line ray tracer that renders a scene of spheres and planes with reflections, shadows, and anti-aliasing, then writes the result to a PPM image file.
Advanced Coming Soon
~13h

Mini Relational Database

Build a small relational database engine from scratch in modern C++ with zero external dependencies. You parse a subset of SQL, store rows in tables, execute selects with filtering, and persist pages to disk. A challenging project that ties together parsing, data structures, and storage.

What You'll Build:
A command-line database that accepts a subset of SQL to create tables, insert rows, and run selects with where clauses, persisting all data to a file between sessions.
Advanced Coming Soon
~12h

Multithreaded HTTP Server

Build a multithreaded HTTP server from scratch in modern C++ using POSIX sockets and the standard library only. You accept connections, parse HTTP requests, serve static files, and dispatch work to a thread pool guarded by proper synchronisation. A serious exercise in networking and concurrency.

What You'll Build:
An HTTP/1.1 server that serves static files from a directory, handles many simultaneous clients through a worker thread pool, and returns correct status codes and headers.
Advanced Coming Soon
~11h

Memory Allocator

Implement your own memory allocator from scratch in modern C++ with zero external dependencies. You request memory from the operating system, carve it into blocks, track free and used regions, and implement malloc and free yourself with coalescing and splitting. A low-level project that demystifies dynamic memory.

What You'll Build:
A working general-purpose allocator with your own malloc, free, and realloc that manages a heap, splits and coalesces blocks, and drops into real programs.
Advanced Coming Soon
~11.5h

Regex Engine

Build a regular expression engine from scratch in modern C++ using only the standard library. You parse a pattern into a syntax tree, compile it to an NFA via Thompson construction, then simulate the automaton to match input. A theory-meets-practice project on automata and parsing.

What You'll Build:
A regex library that supports concatenation, alternation, the star, plus, and optional quantifiers, and character classes, matching strings by simulating a compiled NFA.
Advanced Coming Soon
~15h

Scripting Language Interpreter

Build an interpreter for a small scripting language from scratch in modern C++ with zero external dependencies. You tokenise source code, parse it into an AST, and either walk the tree or compile to bytecode for a stack-based virtual machine. A capstone project on the full pipeline from text to execution.

What You'll Build:
A working interpreter for a small dynamic language with variables, arithmetic, control flow, and functions, run either by a tree-walking evaluator or a bytecode virtual machine.
Advanced Coming Soon
~14h

Chess Engine

Build a chess engine from scratch in modern C++ using only the standard library. You represent the board, generate all legal moves including castling and en passant, then search with minimax, alpha-beta pruning, and a position evaluation. A demanding project in game AI and performance-minded C++.

What You'll Build:
A command-line chess engine that plays a legal game against a human, generating every legal move and choosing its own with an alpha-beta search and board evaluation.
Advanced Coming Soon
~12h

Persistent Key-Value Store

Build a persistent key-value store from scratch in modern C++ with zero external dependencies. You append writes to a log, keep an in-memory index, serve reads quickly, and compact the log to reclaim space, all durable across restarts. A practical study of storage engines and crash-safe design.

What You'll Build:
A durable key-value database with get, put, and delete operations backed by an append-only log and an in-memory index, surviving restarts and reclaiming space through compaction.
Advanced Coming Soon
~13h

2D Physics Engine

Build a 2D physics engine from scratch in modern C++ using only the standard library. You integrate motion over time, detect collisions between circles and polygons, and resolve them with impulses and restitution. A maths-rich project that produces convincing, interactive simulation.

What You'll Build:
A 2D rigid-body physics engine that simulates gravity, collisions between circles and convex polygons, and realistic bouncing, with each frame rendered to the terminal or a PPM sequence.

DSA Data Structures & Algorithms

View Roadmap

Beginner

Static Array

Build a fixed-size array wrapper class with bounds checking and O(1) random access. Learn how arrays store elements in contiguous memory.

3 steps ~0.5h

Dynamic Array

Build a resizable array that automatically grows when you add elements. This is the foundation of std::vector and demonstrates amortized O(1) insertion through the geometric growth strategy.

3 steps ~0.8h

Singly Linked List

Build a dynamic data structure where each element (node) contains data and a pointer to the next node. Unlike arrays, linked lists can grow and shrink at runtime and provide O(1) insertion at the front, making them ideal for stacks, queues, and situations where frequent insertions are needed.

4 steps ~0.9h

Stack

Build a Stack data structure that demonstrates the LIFO (Last In First Out) principle. Stacks are fundamental in computer science, powering function calls, undo systems, and expression evaluation. You'll implement a template-based stack using a dynamic array internally.

3 steps ~0.8h

Queue

Build a FIFO (First In First Out) data structure using a circular array. Queues are fundamental for task scheduling, breadth-first search, and any scenario where processing order must match arrival order.

3 steps ~0.8h

Linear Search

Implement the linear search algorithm to find elements in an array by checking each element sequentially. This fundamental algorithm introduces you to algorithmic thinking and time complexity analysis with O(n) worst-case performance.

4 steps ~0.5h

Binary Search

Implement the binary search algorithm, a fundamental divide-and-conquer technique that finds elements in sorted arrays with O(log n) time complexity. Learn both iterative and recursive approaches, plus practical variants like lower_bound and upper_bound.

4 steps ~0.8h

Have a Project Idea?

We'd love to hear your suggestions! Share your ideas for new C++ projects you'd like to see, and help shape our curriculum.