Introduction
  • Introduction
Algorithms - Recursion
  • What are stack and heap memory?
  • Stack memory and heap memory simulation
  • Stack Memory and Heap Memory Quiz
  • What is recursion (recursive function call)?
  • Head and tail recursion implementation
  • Recursion and stack memory (stack overflow)
  • Recursion Quiz
  • Factorial problem
  • Fibonacci numbers problem
  • Fibonacci numbers - visualizing the stack memory
  • Fibonacci-numbers with tail recursion
  • Towers of Hanoi introduction
  • Towers of Hanoi implementation
  • Towers of Hanoi - visualizing the stack
  • Recursion and iteration (differences)
  • Recursive Problems Quiz
Search Algorithms
  • What is linear search?
  • Linear search implementation
  • What is binary (logarithmic) search?
  • Binary search implementation
  • Search Algorithms Quiz
Algorithms - Backtracking
  • What is backtracking?
  • Brute-force search and backtracking
  • Backtracking Quiz
  • N-queens problem introduction
  • N-queens problem implementation
  • N-queens problem and the stack memory
  • Coloring problem introduction
  • Coloring problem visualization
  • Coloring problem implementation
  • Knight's tour problem introduction
  • Knight's tour problem implementation
  • What is the problem with backtracking?
  • Backtracking Problems Quiz
Algorithms - Dynamic Programming
  • What is dynamic programming?
  • Dynamic Programming Quiz
  • Fibonacci numbers introduction
  • Fibonacci numbers implementation
  • Knapsack problem introduction
  • Knapsack problem example
  • Knapsack problem implementation
  • Dynamic Programming Final Quiz
Data Structures and Abstract Data Types Overview
  • Why to use data structures
  • Data structures and abstract data types
Data Structures - Arrays
  • What are array data structures?
  • Arrays introduction - operations
  • Arrays in C++
  • Arrays Quiz
Data Structures - Linked Lists
  • What are linked lists?
  • Linked list theory - operations
  • Linked list implementation
  • Comparing linked lists and arrays
  • Practical (real-world) applications of linked lists
  • Linked Lists Quiz
Data Structures - Stacks
  • What are stacks?
  • Stacks in memory management (stacks and heaps)
  • Stack memory visualization
  • Stacks implementation with arrays
  • Stack implementation with linked lists
  • Practical (real-world) applications of stacks
  • Stack Quiz
Data Structures - Queues
  • What are queues?
  • Queue implementation with linked list
  • Queues Quiz
Data Structures - Trees
  • Binary search trees theory - basics
  • Binary search trees theory - search, insert
  • Binary search trees theory - delete
  • Binary search trees theory - in-order traversal
  • Binary search trees theory - running times
  • Binary search tree implementation I
  • Stack memory visualization - finding max (min) items
  • Stack memory visualization - tree traversal
  • Binary search tree implementation II
  • Binary search tree implementation III
  • Practical (real-world) applications of trees
  • Binary Search Tree Quiz
Priority Queues (Heaps)
  • What are priority queues?
  • Heap introduction - basics
  • Heap introduction - array representation
  • Heap introduction - remove operation
  • Using heap data structure to sort (heapsort)
  • Heap introduction - running times
  • Binomial and Fibonacci heaps
  • Heaps implementation I
  • Heaps implementation II
  • Heaps Quiz
B-Trees