Algorithms explained
yourbasic.org
Algorithms
- Algorithms: What’s the problem?
- Introduction to graph algorithms: definitions and examples
- Dynamic programming [step-by-step example]
- Las Vegas vs. Monte Carlo algorithms
- Blackjack card counting risk analysis: poor gains at huge risk
- What’s a seed in a random number generator?
- Generate all permutations
Data structures
- Time complexity of array/list operations [Java, Python]
- Hash tables explained [step-by-step example]
- How to avoid initializing memory [in theory]
- Binary search trees explained
- Treaps: Randomized search trees
- Bloom filters explained
Sorting
Correctness
- Loop invariants can give you coding superpowers
- On induction and recursive functions, with an application to binary search
Analysis
- How to analyze time complexity: Count your steps
- Big O notation: definition and examples
- Time complexity of recursive functions [Master theorem]
- Unit cost vs. bit cost in time complexity
- Amortized time complexity
Software engineering
- API design: principles and best practices
- Object-oriented programming without inheritance
- Functional programming in Go [case study]