Resources
Recommended Readings
Here is a list of textbooks that I have read or skimmed and they may be useful for doing research.
Mathematical Toolkit
Mathematics for Computer Science
- Concrete Mathematics: A Foundation for Computer Science, by Ronald L. Graham, Donald E. Knuth, and Oren Patashnik.
- Foundations of Data Science, by Avrim Blum, John Hopcroft, and Ravindran Kannan.
Combinatorics
- The Probabilistic Method, by Noga Alon and Joel H. Spencer.
- An Invitation to Analytic Combinatorics, by Stephen Melczer.
High-Dimensional Probability
- Probability in High Dimension, by Ramon van Handel.
- High-Dimensional Probability: An Introduction with Applications in Data Science, by Roman Vershynin.
Statistics
- High-Dimensional Statistics: A Non-Asymptotic Viewpoint, by Martin J. Wainwright.
Functional Analysis
- Introductory Functional Analysis with Applications, by Erwin Kreyszig.
Differential Equations
- Differential Equations, Dynamical Systems, and an Introduction to Chaos, by Morris Hirsch, Robert L. Devaney, and Stephen Smale.
Analysis of Boolean Functions
- Analysis of Boolean Functions, by Ryan O’Donnell.
Algorithms and Complexity
Algorithm Design and Analysis
- The Design of Approximation Algorithms, by David P. Williamson and David Shmoys.
- Randomized Algorithms, by Rajeev Motwani and Prabhakar Raghavan.
- Exact Exponential Algorithms, by Dieter Kratsch and Fedor V. Fomin.
- Parameterized Algorithms, by Marek Cygan, Fedor V. Fomin, Łukasz Kowalik, Daniel Lokshtanov, Dániel Marx, Marcin Pilipczuk, Michał Pilipczuk, and Saket Saurabh.
- Online Computation and Competitive Analysis, by Allan Borodin and Ran El-Yaniv.
- Parallel and Distributed Computation: Numerical Methods, by Dimitri P. Bertsekas and John N. Tsitsiklis.
- Beyond the Worst-Case Analysis of Algorithms, by Tim Roughgarden.
Optimization
- Introduction to Linear Optimization, by Dimitris Bertsimas and John N. Tsitsiklis.
- Convex Optimization, by Stephen Boyd and Lieven Vandenberghe.
- Convex Optimization: Algorithms and Complexity, by Sébastien Bubeck.
- Integer Programming, by Michele Conforti, Gérard Cornuéjols, and Giacomo Zambelli.
Heuristic Algorithms
- Heuristic Search: Theory and Applications, by Stefan Edelkamp and Stefan Schroedl.
- Handbook of Satisfiability, by Armin Biere, Marijn Heule, Hans van Maaren, and Toby Walsh.
Computational Complexity
- Computational Complexity: A Modern Approach, by Sanjeev Arora and Boaz Barak.
- Mathematics and Computation, by Avi Wigderson.
- Communication Complexity (for Algorithm Designers), by Tim Roughgarden.
Machine Learning
Learning Theory
- Foundations of Machine Learning, by Mehryar Mohri, Afshin Rostamizadeh, and Ameet Talwalkar.
- Understanding Machine Learning: From Theory to Algorithms, by Shai Shalev-Shwartz and Shai Ben-David.
- User-Friendly Introduction to PAC-Bayes Bounds, by Pierre Alquier.
- Bandit Algorithms, by Tor Lattimore and Csaba Szepesvari.
Reinforcement Learning
- Neuro-Dynamic Programming, by Dimitri P. Bertsekas and John N. Tsitsiklis.
- Reinforcement Learning and Optimal Control, by Dimitri P. Bertsekas.
