Introduction
Exploration of algorithmic thinking
()
Use GitHub Codespaces with this course
()
1. Warmup
The two-sum interview problem
()
The two-sum interview problem solution
()
Number placement puzzle
()
2. Divide and Conquer
Triominoes puzzle
()
Triominoes puzzle solution
()
Introduction to divide and conquer
()
Quicksort introduction
()
Implementing Quicksort in Python
()
Challenge: Implementing Fibonacci function in Python
()
Solution: Implementing Fibonacci function in Python
()
3. Transform and Conquer
Coins on a star puzzle
()
Coins on a star puzzle solution
()
Introduction to transform and conquer
()
Presort for mode finding
()
Number placement puzzle revisited
()
Challenge: Implement number puzzle solution in Python
()
Solution: Implement number puzzle solution in Python
()
4. Dynamic Programming
Introduction to dynamic programming
()
Top-down dynamic programming example
()
Bottom-up dynamic programming example
()
The knapsack problem: Theory
()
The knapsack problem: Python implementation
()
Challenge: The knapsack problem
()
Solution: The knapsack problem
()
5. Hash Tables
What are hash tables?
()
Python code for hash tables
()
Python dictionaries
()
Two-sum problem revisited
()
Challenge: Ransom note
()
Solution: Ransom note
()