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
Beginner Fundamentals
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Intermediate Building Skills
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Advanced Real-World Projects
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)
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.
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++.
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.
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.
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.
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.
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.
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++.
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.
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.
DSA Data Structures & Algorithms
View RoadmapBeginner
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.
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.
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.
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.
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.
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.
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.
No matching projects
Try adjusting your filters to see more projects
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.