Introduction
  • Introduction
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 optimization in Python
  • Recursion Quiz
  • Factorial problem - with head recursion
  • Factorial problem - visualizing the stack
  • Transforming a head recursion into a tail recursion
  • Fibonacci numbers problem - with head recursion
  • Fibonacci numbers - visualizing the stack memory
  • Exercise - Fibonacci-numbers with tail recursion
  • Solution - Fibonacci-numbers with tail recursion
  • Towers of Hanoi introduction
  • Towers of Hanoi implementation
  • Towers of Hanoi - visualizing the stack
  • Exercise - solving recursion with iteration
  • Solution - solving recursion with iteration
  • Recursion and iteration revisited
  • Recursive Problems Quiz
Search Algorithms
  • What is linear search?
  • Linear search implementation
  • Exercise - linear search with recursion
  • Solution - linear search with recursion
  • What is binary (logarithmic) search?
  • Binary search implementation
  • Search Algorithms Quiz
Selection Algorithms
  • Selection algorithms introduction
  • Quickselect introduction - Hoare algorithm
  • Quickselect visualization
  • Hoare's Quickselect Quiz
  • Quickselect implementation
  • Exercise - sorting with selection
  • Solution - sorting with selection
  • What the problem with pivots?
  • Selection Algorithms Pivoting Quiz
  • Advanced selection - median of medians, introselect
  • Median of medians algorithm implementation
  • Introselect algorithm - power of combining algorithms
  • Online selection - the secretary problem
  • Selection Algorithms Quiz
Backtracking
  • What is backtracking?
  • Brute-force search and backtracking
  • Backtracking Quiz
  • N-queens problem introduction
  • What is the search tree?
  • N-queens problem implementation I
  • N-queens problem implementation II
  • N-queens problem and stack memory visualization
  • How to earn $1 million with N-queens problem?
  • Hamiltonian paths (and cycles) introduction
  • Hamiltonian cycle illustration
  • Hamiltonian path implementation I
  • Hamiltonian path implementation II
  • Exercise - finding Hamiltonian cycle
  • Solution - finding Hamiltonian cycle
  • Coloring problem introduction
  • Coloring problem visualization
  • Coloring problem implementation
  • Knight's tour introduction
  • Knight's tour implementation I
  • Knight's tour implementation II
  • Maze problem introduction
  • Maze problem implementation
  • What is the problem with backtracking?
  • Backtracking Problems Quiz
Dynamic Programming
  • Dynamic programming introduction
  • Dynamic Programming Quiz
  • Fibonacci numbers introduction
  • Fibonacci numbers implementation
  • Knapsack problem introduction
  • Knapsack problem example
  • Exercise - knapsack problem with recursion
  • Solution - knapsack problem with recursion
  • Knapsack problem implementation
  • Rod cutting problem introduction
  • Rod cutting problem example
  • Rod cutting problem implementation
  • Subset sum problem introduction
  • Subset sum problem example
  • Subset sum implementation
  • Dynamic Programming Final Quiz
Optimal Packing Problem
  • Bin packing problem introduction
  • Bin packing problem implementation
  • Bin packing problem - useful article
  • Bin Packing Quiz
Divide and Conquer Algorithms
  • What are divide-and-conquer approaches?
  • Divide and Conquer Quiz
  • Binary search revisited