- Introduction
- 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
- 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 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
- 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 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
- Bin packing problem introduction
- Bin packing problem implementation
- Bin packing problem - useful article
- Bin Packing Quiz
- What are divide-and-conquer approaches?
- Divide and Conquer Quiz
- Binary search revisited