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

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 DSA
~0.5h

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
What You'll Build:
A StaticArray class template that wraps a C-style array with bounds checking, size tracking, and common array operations like fill, find, and element access.
Beginner DSA
~0.8h

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
What You'll Build:
A DynamicArray class template that manages heap memory, automatically resizes when full, and provides safe element access with bounds checking.
Beginner DSA
~0.9h

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
What You'll Build:
A complete LinkedList class with Node structure supporting insertion, deletion, traversal, and search operations.
Beginner DSA
~0.8h

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
What You'll Build:
A Stack class template with push, pop, top, and utility operations that handles dynamic resizing and demonstrates the LIFO principle used in function call stacks and undo systems.
Beginner DSA
~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
What You'll Build:
A Queue class template using a circular array with O(1) enqueue and dequeue operations, supporting front/back access, size tracking, and real-world use case demonstrations.
Beginner DSA
~0.5h

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
What You'll Build:
A complete linear search implementation with functions to find single elements, find all occurrences, and search with custom conditions using predicates.

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.

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.