Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Advanced C++ - Data Structures
Course Introduction
Welcome to Advanced C++ Data Structures
E-Book Overview
Module 1 - C++ Review
Source Files and Header Files
How Multi-File Programs Work – The “Team Effort” Approach
Best Practices for Organizing Your Projects
Common Mistakes in Program Structure (and How to Avoid Them)
Primitive Types – The Core Building Blocks
Type Casting – Converting One Type into Another
auto – Letting the Compiler Figure It Out
Making Decisions in Your Code
Loops – Doing Things Over and Over
Breaking Your Code Into Reusable Pieces
Function Overloading – Same Name, Different Job
Grouping Related Data Together
Passing Structures to Functions
The Standard Template Library (STL)
The vector STL and strings
begin() and end() – The Loop Bookends
Demo - Transaction Tracker (9:15)
Review Lab Assignments
Lab - Program Structure
Lab - Store Checkout Calculator
Lab - Grade Summary Tool
Lab - Club Roster Tracker with Structures and STL
Lab - Build‑Your‑Own Mini App (Creative Project)
Module 2 - Classes and Objects
What is a Class
Class Syntax and Components
Access Modifiers: public, private, protected
Constructors and Destructors
Member Functions and Data Members
Getters, Setters, and Data Encapsulation
Demo - Car Class (4:41)
Demo - Podcast (4:10)
Overloading Member Functions
Operator Overloading Basics
Organizing Classes in Header and Implementation Files
Video - Classes and Objects Summary (5:56)
Demo - Bank Account (8:23)
Testing and Debugging Class Code
Demo - Bank Account Test Cases (5:51)
Labs - Classes and Objects
Lab - Digital Library Card (Class & Encapsulation Basics)
Lab - Inventory Item Manager (Constructors, Encapsulation, and Overloaded Member Functions)
Lab - Enrollment Receipt Generator (Operator << and Interactive Input)
Lab - RPG Character (Challenge)
Lab - Test Suite for Digital Library Card
Module 3 - Pointers and Memory Management
Understanding Memory Layout (Stack vs. Heap)
Video - Pointers (6:13)
Pointer Basics (* and &)
Dynamic Memory Allocation with new and delete
Pointers to Objects
nullptr and Pointer Safety
Reference Variables vs. Pointers
Demo - Pointers and References (8:43)
Smart Pointers - Unique Pointers – Exclusive Ownership
Demo - Unique Pointers (4:50)
Smart Pointers - Shared Pointers – Shared Ownership
Demo - Shared Pointers (5:11)
Smart Pointer - Weak Pointers – Non-Owning Reference
Demo - Weak Pointers (4:44)
Smart Pointers Wrap-Up
Labs - Pointers
Lab - Raw Pointers & Manual Memory Management
Lab - Build a Tiny Dynamic Int Array (Rule of Three)
Lab - Managing Video Game Characters with Unique Pointers
Lab - Carpool App - Shared Ownership with Shared Pointers (Challenge Lab)
Lab - Library Waitlist - Weak Pointers (Challenge Lab)
Module 4 - Inheritance and Polymorphism
Introduction to Inheritance
Constructors, Destructors, and the Rule of Three/Five in Inheritance
Demo - Inheritance - Person/Student (8:59)
Function Overriding vs. Function Overloading
Demo - Function Overriding vs. Overloading (Shape/Circle/Square) (7:02)
What Does Polymorphism Mean?
Demo - Polymorphism - Inheritance and the Rule of Three (8:15)
Abstract Classes and Pure Virtual Functions
Demo - Abstract Class - Payment Strategy Pattern (3:43)
Virtual Destructors and Resource Management
Wrap-Up and Real-World Applications
Labs - Inheritance and Polymorphism
Lab - Inheritance Basics — Vehicle → Car
Lab - Animal Sounds
Lab - Digital Media Library
Module 5 - Templates
Introduction to Templates
Why Templates Are Useful
Function Templates
Demo - Function Templates (3:16)
Class Templates
Demo - Class Templates (6:04)
Template Specialization
Templates with Multiple Parameters
Demo - Template with Multiple Parameters (4:31)
Templates and Compilation (How They Work Behind the Scenes)
Case Studies / Real-World Applications of Templates
Best Practices and Common Pitfalls
Labs - Templates
Lab - Template Swap Function
Lab - Template Maximum Finder
Lab - Generic Calculator Function
Lab - Config Settings as Key–Value Pairs (Pair)
Lab - Generic Metrics Aggregator (Stats)
Lab - Undo/Redo Command History (Stack)
Module 6 - STL Containers
What Are STL Containers?
Vectors
Demo - Vectors (7:57)
Lists
Demo - Lists (2:24)
Deque
Demo - Deque (3:29)
Map and Multimap
Demo - Map and Multimap (3:46)
Unordered Map
Demo - Unordered Map (3:22)
Choosing the Right Container
Labs - STL Containers
Lab - Library Book Tracker (Vector)
Lab - Playlist Editor (List)
Lab - Checkout Lane (Deque)
Lab - Employee Directory (Map)
Lab - Flight Schedule (Multimap)
Lab - Inventory Counter (Unordered Map)
Lab - Build a Mini App with an Container + Discussion
Challenge Lab - Voting Results Analyzer
Module 7 - Algorithm Analysis and Searching
Why Algorithm Analysis Matters
Big-O Notation Overview
Common time Complexities
Space Complexity
Sequential (Linear) Search
Demo - Sequential (Linear) Search (3:47)
Binary Search
Demo - Binary Search (4:30)
Search Efficiency Comparisons
Labs - Algorithm Analysis and Searching
Lab — Contact List Search (Linear Search)
Lab — Linear vs. Binary Search Race (Head-to-Head)
Lab — Dictionary Word Search (Nearest Suggestions)
Challenge Lab — Efficiency Experiment (Scaling Study)
Module 8 - Sorting Algorithms
Why Sorting Matters
Bubble Sort
Demo - Bubble Sort (3:52)
Selection Sort
Demo - Selection Sort (5:03)
Insertion Sort
Demo - insertion Sort (5:28)
Merge Sort
Demo - Merge Sort (5:30)
Quick Sort
Demo - Quick sort (6:29)
STL's std::sort Function
Demo - STL sort Function (6:24)
Stability and Performance Considerations
Labs - Sorting Algorithms
Lab - Comparing Sorting Algorithms
Lab - Selection Sort with Objects
Lab - Insertion Sort and Nearly Sorted Data
Lab - Merge Sort for Large Data
Lab - STL Sort vs. Stable Sort (Multi-Key)
Lab - Comparing the Efficiency of Sorting Algorithms
Lab - Create Your Own Struct (4 Attributes) and Sort with std::stable_sort
Module 9 - Lists and Linked Lists
Introduction to Linked Lists
Singly Linked List Structure
Creating Nodes Dynamically
Demo - Singly Linked Last (3:55)
Insertion and Deletion in a Singly Linked List
Demo -Singly Linked List using Smart Pointers (7:31)
Traversal and Search
Doubly Linked List Structure
Demo - Doubly Linked List (7:51)
Circular Linked Lists
Demo - Simple Circular Linked List (3:49)
STL list Container
Demo - STL Lists (5:36)
When to Use Linked Lists
Labs - Lists and Linked Lists
Lab - Build and Traverse a Singly Linked List
Lab - Templated Doubly Linked List of Custom Objects
Lab - Manage a Collection with std::list (Your Choice of Object)
Module 10 - Stacks and Queues
Stack Concept and Use Cases
Implementing a Stack with Arrays
Implementing a Stack with Linked Lists
Demo - Stack using a Linked List (6:13)
STL Stack Class
Demo - STL Stack (2:54)
Queue Concept and Use Cases
Implementing a Queue with Arrays
Implementing a Queue with Linked Lists
Demo - Tech Support Ticket System using a Queue (7:41)
STL Queues and Deques
STL Priority Queues
Demo - Priority Queue - Urgent Tickets (5:05)
Labs - Stacks and Queues
Lab - Browser History Navigation (Using Two Stacks)
Lab - Coffee Shop Queue Simulation (STL queue)
Lab - Text Editor Undo/Redo (Two Stacks + Command History)
Lab - Print Queue Manager (Linked-List Queue)
Lab - Emergency Room Triage (Priority Queue Simulation)
Lab - Task Scheduler with a Custom Priority Queue (Min-Heap)
Lab - Challenge Lab - Bank Teller Queue Simulation (Queue + Statistics)
Module 11 - Recursion
Introduction to Recursion
Tracing Recursive Calls
Recursion vs. Iteration
Common Recursive Algorithms
Recursion with Data Structures
Demo - Recursive Linked List (4:41)
How the Call Stack Powers Recursion
Labs - Recursion
Lab - Recursive Digit Counter
Lab - Recursive Power Function
Lab - Recursive Linked List Value Search
Lab - Sum of Digits Using Recursion
Module 12 - Sets
Set Concept and Mathematical Background
Set Theory
STL set
STL multiset
Common Set Operations
Demo - Sets - Event Guest List (6:49)
Union of Sets
Intersection of Sets
Difference of Sets
Demo - Set Operations - Shopping Cart Analysis (6:04)
Ordered Sets
Unordered Sets
Demo - Ordered and Unordered Sets - Bookstore Inventory (4:57)
When to Use Sets vs. Other Containers
Labs - Sets
Lab - Unique Word Counter
Lab - Shared Club Members
Lab - Canceled and Active Registrations
Lab - Duplicate Tracking with Multiset
Lab - Challenge - Customer Orders and Product Popularity
Lab - Challenge - Streaming Service Catalog & Plays Analyzer
Module 13 - Trees
Introduction to Tree Structures
Tree Terminology
Binary Trees
Binary Search Trees (BSTs)
Demo - Binary Search Trees (BST) (9:32)
Tree Traversal
Demo - Binary Traversal (In order, Pre order, Post order) (10:00)
Balanced Trees Overview
AVL Trees
AVL Tree Rebalance Roations
Demo - Automatic Balancing with AVL Tree Rotations (10:12)
Heaps and Heap Operations
Demo - Min-Heap (6:25)
STL Tree-Like Containers (set, map)
Labs - Trees
Lab - Binary Search Tree (BST) Builder
Lab - Tree Traversal Visualizer
Lab - AVL Tree Demonstration
Lab - Heap Priority Queue Simulation
Challenge Lab: Build vs. Use
Module 14 - Graphs
Graph Terminology and Types
Representing Graphs (Adjacency List, Adjacency Matrix)
Directed vs. Undirected Graphs
Demo - Social Media Follow Graph - Understanding Directed Graphs (10:29)
Weighted Graphs
Graph Traversals (BFS and DFS)
Demo - Graph Traversals (BFS and DFS) (10:29)
Shortest Path Algorithms (Dijkstra and Bellman-Ford)
Demo - Package Delivery Route Optimizer (Dijkstra’s Algorithm) (8:17)
Demo - Flight Connections - Exploring Graph Traversal (9:31)
Minimum Spanning Trees (MSTs)
Demo - City Network Optimization Using Prim’s Algorithm (9:34)
Kruskal’s Algorithm
Demo - City Network Optimization Using Kruskal’s Algorithm
Real-World Graph Applications
Labs - Graphs
Lab – Social Media Follower Network (Directed Graphs)
Lab – Flight Connections Explorer (BFS and DFS)
Lab – Delivery Route Optimizer (Dijkstra’s Algorithm)
Lab – City Fiber Network Planner (Minimum Spanning Tree – Prim’s or Kruskal’s)
Module 15 - Hash Tables
Introduction to Hashing
Hash Functions and Keys
Handling Collisions (Chaining and Open Addressing)
Load Factor and Rehashing
STL unordered_map and unordered_set
Demo - Tracking Attendance with an Unordered Map (HashMap) (3:54)
Performance Considerations
Real World Hash Table Use Cases
Hash Table Chaining
Demo - Hash Table Chaining with Retail Products (7:26)
Labs - Hash Tables
Lab - Exploring Basic Hashing
Lab - Hash Table Chaining with Strings
Lab - Using unordered_map for Inventory Lookup
Lab - Simulating Collisions
Module 16 - Advanced Algorithms
Introduction to Advanced Algorithms
Greedy Algorithms
Greedy Scheduling Algorithms (Activity Selection Problem)
Scheduling Algorithm Demo (6:42)
Dynamic Programming Basics
Dynamic Programming with the Fibonacci Sequence (4:31)
Backtracking Algorithms
Branch and Bound
Heuristic Algorithms
Traveling Salesperson Problem (TSP)
Huffman Compression
Combining Data Structures with Advanced Algorithms
Difference of Sets
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock