What are some good resources for strengthening my theoretical foundation for machine learning? I'm a computer science major and I'm taking a lot of machine learning courses. I'm finding that my theoretical foundation on subjects like calculus and linear algebra are not as strong as I'd like them to be, so I'm wondering about resources for these two topics. I'm not new to either areas, but I would like to build a really solid theoretical foundation since I enjoy being rigorous and I also potentially want to do research in ML in the future.


Calculus: I took calc 1 and calc 2 in high school, but my AP class didn't really cover that much more beyond basic derivatives, integrals, and Taylor series. I took calc 3 recently but I feel that my intuition about multivariate calculus is still relatively weak.
Linear algebra: I took a rigorous proof-based book on linear algebra as a first course on linear algebra. While I enjoyed the class and did well in it, I don't know that much about the applications, and we didn't get to things like diagonalization. I've been reading Linear Algebra Done Right since it's been recommended to me by a friend and I've heard great things about it.


What are some resources (online or books) that I can use to review and strengthen my theoretical understanding on these two topics, especially calculus? Preferably I'd like something with a lot of exercises and not necessarily aimed at someone with no prior knowledge of it.
I suggest 
Probability and Computing: Randomized Algorithms and Probabilistic Analysis by Mitzenmacher and Upfal. Probability is at the foundation of machine learning and it's one of the weakest points for many beginners, in my experience.