# Visual Masterclass > Interactive, visual-first masterclasses in C++ and Data Structures & Algorithms — built for humans and AI. Watch every concept and algorithm run, step by step, then read the same canonical run as machine-readable data. Open, free, no accounts. Every page is static HTML (fully crawlable). The interactive visualizations are deterministic and each publishes a machine-readable twin so agents can read the exact same run humans watch. ## C++ Mastery A visual C++ course — memory, pointers, OOP, the STL and more, shown byte by byte. - [Introduction to C++ Programming](https://strivera2z.com/cpp/introduction): Learn the history, evolution, key features, applications, and basic execution flow of C++ programs. - [Variables, Data Types, and Operators](https://strivera2z.com/cpp/variables-data-types-operators): Master local and global scoping, integer and floating data types, modifiers, implicit/explicit type casting, and C++ operator classifications. - [Control Flow: Conditionals and Loops](https://strivera2z.com/cpp/control-flow): Learn conditionals (if/else, switch-case, ternary operators) and loop constructs (for, while, do-while) along with jump commands. - [Functions in C++](https://strivera2z.com/cpp/functions): Understand function structures, arguments pass-by-value/reference/pointer, inline declarations, lambda functions, and recursive behaviors. - [Arrays and Strings in C++](https://strivera2z.com/cpp/arrays-and-strings): Discover single and multidimensional arrays, base memory address passing, C-style string library functions, and modern C++ string APIs. - [Pointers and References in C++](https://strivera2z.com/cpp/pointers-and-references): Master direct hardware memory access: address-of and dereference operators, pointer arithmetic, double pointers, heap management, and references. - [Object-Oriented Programming (OOP)](https://strivera2z.com/cpp/object-oriented-programming): Comprehensive guide to classes/objects, constructors/destructors, access specifiers, encapsulation, data abstraction, friend classes, and inheritance. - [Standard Template Library (STL)](https://strivera2z.com/cpp/standard-template-library): Master STL collections (vectors, lists, stacks, queues, deques, sets, maps) and core utility algorithms (sorting, searching, counting). - [File Handling in C++](https://strivera2z.com/cpp/file-handling): Learn standard console standard streams (cin, cout, cerr, clog) and file I/O operations (creation, reading, writing, appending, closing). - [Dynamic Memory & Advanced Topics](https://strivera2z.com/cpp/advanced-topics): Deeper look into dynamic memory management (new/delete), exception handling mechanics, and template metaprogramming for reusable classes. - [Searching and Sorting Algorithms](https://strivera2z.com/cpp/searching-sorting-algorithms): Analyze searching (Linear, Binary Search) and sorting (Bubble, Selection, Merge Sort) workflows with code implementations. - [Debugging and Error Handling in C++](https://strivera2z.com/cpp/debugging-error-handling): Identify and resolve syntax, linker, logical, and runtime errors. Master debugging techniques using manual audits and IDE tools. - [Best Practices in C++ Programming](https://strivera2z.com/cpp/best-practices): Write cleaner, safer, and more maintainable code using descriptive naming, strict scopes, constant variables, and modern style standards. - [Reserved Keywords in C++](https://strivera2z.com/cpp/reserved-keywords): Complete reference sheet of C++ keywords, compiler VIPs, and identifiers with special contextual meaning. ## DSA Visualized 44 interactive algorithm lessons across 11 topics. Each scene has a JSON twin at the same path + ".json" (full spec + deterministic trace). - [Arrays](https://strivera2z.com/dsa/arrays): The row of boxes everything is built on. - Arrays & Memory — https://strivera2z.com/dsa/arrays/arrays · data: https://strivera2z.com/dsa/arrays/arrays.json - 2D Arrays — https://strivera2z.com/dsa/arrays/2d-arrays · data: https://strivera2z.com/dsa/arrays/2d-arrays.json - Two Pointers — https://strivera2z.com/dsa/arrays/two-pointers · data: https://strivera2z.com/dsa/arrays/two-pointers.json - Sliding Window — https://strivera2z.com/dsa/arrays/sliding-window · data: https://strivera2z.com/dsa/arrays/sliding-window.json - [Strings](https://strivera2z.com/dsa/strings): An array of characters, with its own tricks. - Strings — https://strivera2z.com/dsa/strings/strings · data: https://strivera2z.com/dsa/strings/strings.json - [Searching](https://strivera2z.com/dsa/searching): Finding one thing among many — slow, then clever. - Linear Search — https://strivera2z.com/dsa/searching/linear-search · data: https://strivera2z.com/dsa/searching/linear-search.json - Binary Search — https://strivera2z.com/dsa/searching/binary-search · data: https://strivera2z.com/dsa/searching/binary-search.json - Ternary Search — https://strivera2z.com/dsa/searching/ternary-search · data: https://strivera2z.com/dsa/searching/ternary-search.json - [Sorting](https://strivera2z.com/dsa/sorting): Putting things in order, and why how matters. - Bubble Sort — https://strivera2z.com/dsa/sorting/bubble-sort · data: https://strivera2z.com/dsa/sorting/bubble-sort.json - Selection Sort — https://strivera2z.com/dsa/sorting/selection-sort · data: https://strivera2z.com/dsa/sorting/selection-sort.json - Insertion Sort — https://strivera2z.com/dsa/sorting/insertion-sort · data: https://strivera2z.com/dsa/sorting/insertion-sort.json - Merge Sort — https://strivera2z.com/dsa/sorting/merge-sort · data: https://strivera2z.com/dsa/sorting/merge-sort.json - Quick Sort — https://strivera2z.com/dsa/sorting/quick-sort · data: https://strivera2z.com/dsa/sorting/quick-sort.json - Heap Sort — https://strivera2z.com/dsa/sorting/heap-sort · data: https://strivera2z.com/dsa/sorting/heap-sort.json - Shell Sort — https://strivera2z.com/dsa/sorting/shell-sort · data: https://strivera2z.com/dsa/sorting/shell-sort.json - Counting Sort — https://strivera2z.com/dsa/sorting/counting-sort · data: https://strivera2z.com/dsa/sorting/counting-sort.json - Radix Sort — https://strivera2z.com/dsa/sorting/radix-sort · data: https://strivera2z.com/dsa/sorting/radix-sort.json - [Stacks & Queues](https://strivera2z.com/dsa/stacks-queues): Two structures that differ by one decision. - Stack — https://strivera2z.com/dsa/stacks-queues/stack · data: https://strivera2z.com/dsa/stacks-queues/stack.json - Queue — https://strivera2z.com/dsa/stacks-queues/queue · data: https://strivera2z.com/dsa/stacks-queues/queue.json - Deque — https://strivera2z.com/dsa/stacks-queues/deque · data: https://strivera2z.com/dsa/stacks-queues/deque.json - Circular Queue — https://strivera2z.com/dsa/stacks-queues/circular-queue · data: https://strivera2z.com/dsa/stacks-queues/circular-queue.json - Monotonic Stack — https://strivera2z.com/dsa/stacks-queues/monotonic-stack · data: https://strivera2z.com/dsa/stacks-queues/monotonic-stack.json - [Linked Lists](https://strivera2z.com/dsa/linked-lists): Give up instant access to buy cheap insertion. - Linked List — https://strivera2z.com/dsa/linked-lists/linked-list · data: https://strivera2z.com/dsa/linked-lists/linked-list.json - Doubly Linked List — https://strivera2z.com/dsa/linked-lists/doubly-linked-list · data: https://strivera2z.com/dsa/linked-lists/doubly-linked-list.json - Circular Linked List — https://strivera2z.com/dsa/linked-lists/circular-linked-list · data: https://strivera2z.com/dsa/linked-lists/circular-linked-list.json - [Hashing](https://strivera2z.com/dsa/hashing): Jump straight to what you want. - Hash Map — https://strivera2z.com/dsa/hashing/hash-map · data: https://strivera2z.com/dsa/hashing/hash-map.json - Sets — https://strivera2z.com/dsa/hashing/sets · data: https://strivera2z.com/dsa/hashing/sets.json - [Trees](https://strivera2z.com/dsa/trees): When your data starts to branch. - Binary Search Tree — https://strivera2z.com/dsa/trees/binary-search-tree · data: https://strivera2z.com/dsa/trees/binary-search-tree.json - Tree Traversals — https://strivera2z.com/dsa/trees/tree-traversals · data: https://strivera2z.com/dsa/trees/tree-traversals.json - Heap & Priority Queue — https://strivera2z.com/dsa/trees/heap · data: https://strivera2z.com/dsa/trees/heap.json - AVL Tree — https://strivera2z.com/dsa/trees/avl-tree · data: https://strivera2z.com/dsa/trees/avl-tree.json - Segment Tree — https://strivera2z.com/dsa/trees/segment-tree · data: https://strivera2z.com/dsa/trees/segment-tree.json - Trie (Prefix Tree) — https://strivera2z.com/dsa/trees/trie · data: https://strivera2z.com/dsa/trees/trie.json - [Graphs](https://strivera2z.com/dsa/graphs): Anything connected to anything. - Breadth-First Search — https://strivera2z.com/dsa/graphs/graph-bfs · data: https://strivera2z.com/dsa/graphs/graph-bfs.json - Depth-First Search — https://strivera2z.com/dsa/graphs/graph-dfs · data: https://strivera2z.com/dsa/graphs/graph-dfs.json - Topological Sort — https://strivera2z.com/dsa/graphs/topological-sort · data: https://strivera2z.com/dsa/graphs/topological-sort.json - Dijkstra's Shortest Path — https://strivera2z.com/dsa/graphs/dijkstra · data: https://strivera2z.com/dsa/graphs/dijkstra.json - Bellman–Ford — https://strivera2z.com/dsa/graphs/bellman-ford · data: https://strivera2z.com/dsa/graphs/bellman-ford.json - A* Search — https://strivera2z.com/dsa/graphs/a-star · data: https://strivera2z.com/dsa/graphs/a-star.json - Union-Find — https://strivera2z.com/dsa/graphs/union-find · data: https://strivera2z.com/dsa/graphs/union-find.json - [Recursion & Backtracking](https://strivera2z.com/dsa/recursion-backtracking): Problems that solve smaller copies of themselves. - Recursion & the Call Stack — https://strivera2z.com/dsa/recursion-backtracking/recursion · data: https://strivera2z.com/dsa/recursion-backtracking/recursion.json - Backtracking — https://strivera2z.com/dsa/recursion-backtracking/backtracking · data: https://strivera2z.com/dsa/recursion-backtracking/backtracking.json - [Greedy & DP](https://strivera2z.com/dsa/greedy-dp): Local greed, and remembering what you already solved. - Greedy Algorithms — https://strivera2z.com/dsa/greedy-dp/greedy · data: https://strivera2z.com/dsa/greedy-dp/greedy.json - Dynamic Programming — https://strivera2z.com/dsa/greedy-dp/dynamic-programming · data: https://strivera2z.com/dsa/greedy-dp/dynamic-programming.json ## DSA · Reimagined A correct-by-construction visualization engine: the picture is a pure function of the real data. Each visualization exposes its full deterministic run as JSON. - [Traverse an Array](https://strivera2z.com/dsa-viz-v2/array-traverse): Walk every element left to right. · data: https://strivera2z.com/dsa-viz-v2/array-traverse.json - [Insert into an Array](https://strivera2z.com/dsa-viz-v2/array-insert): Open a gap, then drop the value in. · data: https://strivera2z.com/dsa-viz-v2/array-insert.json - [Delete from an Array](https://strivera2z.com/dsa-viz-v2/array-delete): Remove one, and watch the gap close. · data: https://strivera2z.com/dsa-viz-v2/array-delete.json - [Reverse an Array](https://strivera2z.com/dsa-viz-v2/array-reverse): Two pointers walk inward, trading ends. · data: https://strivera2z.com/dsa-viz-v2/array-reverse.json - [Rotate an Array](https://strivera2z.com/dsa-viz-v2/rotate-array): Shift every element left by k — with three reversals. · data: https://strivera2z.com/dsa-viz-v2/rotate-array.json - [Dutch National Flag](https://strivera2z.com/dsa-viz-v2/dutch-national-flag): Sort 0s, 1s and 2s in a single pass, three pointers. · data: https://strivera2z.com/dsa-viz-v2/dutch-national-flag.json - [Prefix Sum](https://strivera2z.com/dsa-viz-v2/prefix-sum): Turn an array into running totals — in place. · data: https://strivera2z.com/dsa-viz-v2/prefix-sum.json - [Kadane's Algorithm](https://strivera2z.com/dsa-viz-v2/kadane): Find the largest-sum contiguous subarray in one pass. · data: https://strivera2z.com/dsa-viz-v2/kadane.json - [Sliding Window (Max Sum)](https://strivera2z.com/dsa-viz-v2/sliding-window): Slide a fixed window to find the largest sum of k in a row. · data: https://strivera2z.com/dsa-viz-v2/sliding-window.json - [Move Zeroes](https://strivera2z.com/dsa-viz-v2/move-zeroes): Push every zero to the end, keeping order — in place. · data: https://strivera2z.com/dsa-viz-v2/move-zeroes.json - [Palindrome Check](https://strivera2z.com/dsa-viz-v2/palindrome-check): Two pointers close in — do the ends always match? · data: https://strivera2z.com/dsa-viz-v2/palindrome-check.json - [Reverse a String](https://strivera2z.com/dsa-viz-v2/reverse-string): Swap the ends inward until the whole word flips. · data: https://strivera2z.com/dsa-viz-v2/reverse-string.json - [Linear Search](https://strivera2z.com/dsa-viz-v2/linear-search): Check each element until the key turns up. · data: https://strivera2z.com/dsa-viz-v2/linear-search.json - [Binary Search](https://strivera2z.com/dsa-viz-v2/binary-search): Halve the range each step — discard the half that can’t hold the key. · data: https://strivera2z.com/dsa-viz-v2/binary-search.json - [Two Sum (Sorted)](https://strivera2z.com/dsa-viz-v2/two-sum-sorted): Two pointers close in from both ends to hit the target. · data: https://strivera2z.com/dsa-viz-v2/two-sum-sorted.json - [Bubble Sort](https://strivera2z.com/dsa-viz-v2/bubble-sort): Adjacent swaps float the biggest value to the end each pass. · data: https://strivera2z.com/dsa-viz-v2/bubble-sort.json - [Selection Sort](https://strivera2z.com/dsa-viz-v2/selection-sort): Find the smallest, send it to the front, repeat. · data: https://strivera2z.com/dsa-viz-v2/selection-sort.json - [Insertion Sort](https://strivera2z.com/dsa-viz-v2/insertion-sort): Grow a sorted prefix; slide each new value back into place. · data: https://strivera2z.com/dsa-viz-v2/insertion-sort.json - [Merge Sort](https://strivera2z.com/dsa-viz-v2/merge-sort): Split to single elements, then merge halves through a buffer. · data: https://strivera2z.com/dsa-viz-v2/merge-sort.json - [Quick Sort](https://strivera2z.com/dsa-viz-v2/quick-sort): Partition around a pivot, then recurse on each side. · data: https://strivera2z.com/dsa-viz-v2/quick-sort.json - [Heap Sort](https://strivera2z.com/dsa-viz-v2/heap-sort): Build a max-heap in the array, then pull the max to the end, repeat. · data: https://strivera2z.com/dsa-viz-v2/heap-sort.json - [Counting Sort](https://strivera2z.com/dsa-viz-v2/counting-sort): Tally each value, then place them all in order — no comparisons. · data: https://strivera2z.com/dsa-viz-v2/counting-sort.json - [Radix Sort](https://strivera2z.com/dsa-viz-v2/radix-sort): Stably sort by each digit, least-significant first. · data: https://strivera2z.com/dsa-viz-v2/radix-sort.json - [Stack — Push & Pop](https://strivera2z.com/dsa-viz-v2/stack-push-pop): Last in, first out — everything happens at the top. · data: https://strivera2z.com/dsa-viz-v2/stack-push-pop.json - [Queue — Enqueue & Dequeue](https://strivera2z.com/dsa-viz-v2/queue-enqueue-dequeue): First in, first out — join at the back, leave from the front. · data: https://strivera2z.com/dsa-viz-v2/queue-enqueue-dequeue.json - [Monotonic Stack — Next Greater](https://strivera2z.com/dsa-viz-v2/monotonic-stack): One pass, one stack: find each value’s next greater neighbour. · data: https://strivera2z.com/dsa-viz-v2/monotonic-stack.json - [Traverse a Linked List](https://strivera2z.com/dsa-viz-v2/linked-list-traverse): Follow next pointers from head to ∅. · data: https://strivera2z.com/dsa-viz-v2/linked-list-traverse.json - [Insert into a Linked List](https://strivera2z.com/dsa-viz-v2/linked-list-insert): Rewire two pointers — nothing shifts. · data: https://strivera2z.com/dsa-viz-v2/linked-list-insert.json - [Delete from a Linked List](https://strivera2z.com/dsa-viz-v2/linked-list-delete): Point past the node — it simply drops out of the chain. · data: https://strivera2z.com/dsa-viz-v2/linked-list-delete.json - [Reverse a Linked List](https://strivera2z.com/dsa-viz-v2/linked-list-reverse): Move each node, one at a time, to the front of a new list. · data: https://strivera2z.com/dsa-viz-v2/linked-list-reverse.json - [Hash Table — Linear Probing](https://strivera2z.com/dsa-viz-v2/hash-linear-probing): h(k) picks a slot; if it’s taken, walk forward until one is free. · data: https://strivera2z.com/dsa-viz-v2/hash-linear-probing.json - [Hash Table — Chaining](https://strivera2z.com/dsa-viz-v2/hash-chaining): Every bucket holds a little list; collisions just grow a chain. · data: https://strivera2z.com/dsa-viz-v2/hash-chaining.json - [BST — Insert](https://strivera2z.com/dsa-viz-v2/bst-insert): Smaller keys go left, larger go right — every key finds one path. · data: https://strivera2z.com/dsa-viz-v2/bst-insert.json - [BST — Search](https://strivera2z.com/dsa-viz-v2/bst-search): One comparison per level throws away half the tree. · data: https://strivera2z.com/dsa-viz-v2/bst-search.json - [In-order Traversal](https://strivera2z.com/dsa-viz-v2/bst-inorder): Left, node, right — and the keys come out sorted. · data: https://strivera2z.com/dsa-viz-v2/bst-inorder.json - [BST — Delete](https://strivera2z.com/dsa-viz-v2/bst-delete): Leaf, one child, or two — the third case needs a successor. · data: https://strivera2z.com/dsa-viz-v2/bst-delete.json - [Build a Max-Heap](https://strivera2z.com/dsa-viz-v2/heap-build): Sift every parent down until each one outranks its children. · data: https://strivera2z.com/dsa-viz-v2/heap-build.json - [Heap — Extract Max](https://strivera2z.com/dsa-viz-v2/heap-pop): Take the root, move the last node up, and sink it back down. · data: https://strivera2z.com/dsa-viz-v2/heap-pop.json - [Breadth-First Search](https://strivera2z.com/dsa-viz-v2/graph-bfs): Explore ring by ring, using a queue. · data: https://strivera2z.com/dsa-viz-v2/graph-bfs.json - [Depth-First Search](https://strivera2z.com/dsa-viz-v2/graph-dfs): Follow one path as deep as it goes, then back up. · data: https://strivera2z.com/dsa-viz-v2/graph-dfs.json - [Topological Sort](https://strivera2z.com/dsa-viz-v2/topological-sort): Order tasks so every arrow points forward. · data: https://strivera2z.com/dsa-viz-v2/topological-sort.json - [Dijkstra’s Shortest Path](https://strivera2z.com/dsa-viz-v2/dijkstra): Always expand the closest unsettled node. · data: https://strivera2z.com/dsa-viz-v2/dijkstra.json - [Minimum Spanning Tree (Kruskal)](https://strivera2z.com/dsa-viz-v2/mst-kruskal): Take the cheapest edge that doesn’t close a cycle. · data: https://strivera2z.com/dsa-viz-v2/mst-kruskal.json - [Recursion — Fibonacci Call Tree](https://strivera2z.com/dsa-viz-v2/recursion-fibonacci): Watch the same subproblem get solved again and again. · data: https://strivera2z.com/dsa-viz-v2/recursion-fibonacci.json - [Backtracking — All Subsets](https://strivera2z.com/dsa-viz-v2/subsets-backtracking): Every element: take it or leave it. Each path spells a subset. · data: https://strivera2z.com/dsa-viz-v2/subsets-backtracking.json - [Backtracking — N-Queens](https://strivera2z.com/dsa-viz-v2/n-queens): Place a queen per row; retreat the moment it cannot work. · data: https://strivera2z.com/dsa-viz-v2/n-queens.json - [DP — Fibonacci Table](https://strivera2z.com/dsa-viz-v2/dp-fibonacci): The same answer in n steps instead of 2ⁿ calls. · data: https://strivera2z.com/dsa-viz-v2/dp-fibonacci.json - [DP — Coin Change](https://strivera2z.com/dsa-viz-v2/coin-change): Fewest coins for every amount up to the target. · data: https://strivera2z.com/dsa-viz-v2/coin-change.json - [DP — Longest Increasing Subsequence](https://strivera2z.com/dsa-viz-v2/lis): For each element, the best chain that ends there. · data: https://strivera2z.com/dsa-viz-v2/lis.json - [DP — Edit Distance](https://strivera2z.com/dsa-viz-v2/edit-distance): Fewest insert / delete / replace steps between two words. · data: https://strivera2z.com/dsa-viz-v2/edit-distance.json ## Machine-readable data - [Expanded overview for LLMs](https://strivera2z.com/llms-full.txt) - [Sitemap](https://strivera2z.com/sitemap-index.xml) - [DSA catalog (JSON)](https://strivera2z.com/dsa.json) - [DSA·Reimagined catalog (JSON)](https://strivera2z.com/dsa-viz-v2/catalog.json) - [RSS feed](https://strivera2z.com/feed.xml) ## Contact - Email: ashishgx2014@gmail.com