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
Lab - Create Your Own Struct (4 Attributes) and Sort with std::stable_sort
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock