- Introduction
- 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
- 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 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 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 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
- Bin packing problem introduction
- Bin packing problem implementation
- Bin packing problem - useful article
- Bin Packing Quiz