Introduction
  • Introduction
Recursion
  • What are stack and heap memory?
  • Stack memory and heap memory simulation
  • Memory Quiz
  • Recursion introduction
  • Adding numbers: iteration vs recursion
  • Recursion and stack memory (stack overflow)
  • Recursion optimization in Java
  • Recursion Quiz
  • Head recursion and tail recursion implementation
  • Factorial function - head recursion
  • Factorial problem - visualizing the stack
  • Factorial function - tail recursion
  • Fibonacci numbers - head recursion
  • Fibonacci numbers - visualizing the stack memory
  • Exercise - Fibonacci-numbers with tail recursion
  • Solution - Fibonacci-numbers with tail recursion
  • Towers of Hanoi problem introduction
  • Tower of Hanoi problem implementation
  • Towers of Hanoi - visualizing the stack
  • Exercise - solving recursion with iteration
  • Solution - solving recursion with iteration
  • Iteration and recursion 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 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 algorithm
  • Combining algorithms - introselect algorithm
  • Online selection - the secretary problem
  • Selection Algorithms Quiz
Backtracking
  • Backtracking introduction
  • 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 cycle implementation I
  • Hamiltonian cycle implementation II
  • Coloring problem introduction
  • Coloring problem visualization
  • Coloring problem implementation I
  • Coloring problem implementation II
  • Knight's tour introduction
  • Knight's tour implementation I
  • Knight's tour implementation II
  • Maze problem introduction
  • Maze problem implementation I
  • Maze problem implementation II
  • Sudoku introduction
  • Sudoku implementation I
  • Sudoku implementation II
  • What is the issue with NP-complete problems?
  • Backtracking Problems Quiz
Dynamic Programming
  • Dynamic programming introduction
  • Dynamic Programming Quiz
  • Fibonacci numbers introduction
  • Fibonacci numbers implementation
  • Knapsack problem introduction
  • Knapsack problem example
  • Knapsack problem implementation I
  • Knapsack problem implementation II
  • Exercise - recursive implementation
  • Solution - recursive implementation
  • Rod cutting problem introduction
  • Rod cutting problem example
  • Rod cutting problem implementation
  • Subset sum problem introduction
  • Subset sum problem example
  • Subset sum problem implementation
  • Dynamic Programming Final Quiz
Optimal Packing Problem
  • Bin packing problem introduction
  • Bin packing problem implementation
  • Bin packing problem - useful article
  • Bin Packing Quiz