Prerequisites
Programming skills: You should be able to write and debug programs without drama and without handholding.
Ability to do short proofs
Some sophistication with core computer science concepts:
- Computational complexity
- Analysis of algorithms
Facility with mathematics concepts:
- Some calculus and linear algebra
- Basic Probability and statistics