Algorithms explained
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]