Hello all,
My goal is to learn some basic math + programming skills as quickly as possible, so that I can read research papers without being tripped up by the math, and because they are by far my weakest skill area at the moment and feel like a bottleneck for me. My plan is to spend 15-25 hours a week on this for the next five months and experiment with what works best.
My background:
Have not taken a math class since completing Calculus.
1 year of intro CS classes only covering C++
These are my current ideas on what I should learn:
Programming
Python
Data Structures + Algorithms
Machine Learning
Math
Statistics / Probability
Linear Algebra
Multivariable Calculus
My hypothesis on what would work fastest is to hire a tutor for each of these topics from Bountied Rationality and work through the most highly recommended textbook on each topic (I suspect this would work better for math than for programming). Other than that, the options I’m currently aware of for learning are taking lectures from Coursera, Codecademy, and various coding BootCamps.
My Current Questions:
What textbooks would you recommend for these topics? (Right now my list is only “Linear Algebra Done Right”)
What other ideas do folks have for learning these topics that I can experiment with?
What other topics might I be overlooking?
What other feedback might you have for me?
Thank you so much!
I’ve also been self-teaching myself similar topics. Reading books and working through the exercises works much better for me personally than watching videos. For Python, I recommend Think Python 2e, which is freely available here, and Charles Severance’s Python for Everybody on FreeCodeCamp. For Machine Learning, the gold standard is An Introduction to Statistical Learning. The exercises are in R, but I think you can find Python versions somewhere on the internet.
For Statistics and Probability I used OpenIntro, but I’ve also got Pishro-Nik’s Introduction to Probability, Statistics, and Random Processes on my list as a more advanced next book. For Differential Equations and Linear Algebra, I’m using Strang’s book of the same name, and the associated MIT OCW lectures.
Send me a PM if you’d like to discuss further!
My advice for math is that it’s often possible to think you understand something even if you don’t, so it’s good to do at least some exercises. Also, the methodology, and general “mathematical maturity” is often what you’ll reuse the most in research—being able to reason by following specific allowed/disallowed steps, and knowing that you can understand a claim by reading Wolfram Mathworld, Wikipedia, textbooks, etc. So to some extent it doesn’t matter so much what you learn, as that you learn something well. Having said that, the first half of a math textbook tends to be much more useful than the second half—there are diminishing returns in each subfield.
For programming, the same is often true—what you’re aiming to get is a general sort of maturity, and comfort with debugging and building programs. So probably you want to mostly read tutorials for initial few weeks, then mostly do a project after that.
In both cases, I agree that a tutor is super-useful for getting unstuck, if you have the luxury of being able to afford one.
A couple of things which will be really helpful:
Not at the start but very useful for once you’re starting to read papers.
IMHO the single best educational youtuber—There’s a series on linear algebra, another on neural networks, and even one on calculus.
The videos on their own won’t be enough to learn, but they are a fantastic supplement and visualisation prompt.
I flipping love 3b1b. The linear algebra and calculus series are particularly great.
What textbooks would you recommend for these topics? (Right now my list is only “Linear Algebra Done Right”)
The best textbooks on every subject from lesswrong.
Thank you Caleb I have combed through this!
IMO, talking with someone experienced is very much worth it, even if only to understand better what to study in your situation. Or to get feedback on your exercise sheet write-ups.
Besides, I strongly recommend you find someone at your level who wants to learn these subjects as well, so you can meet regularly and discuss exercises/unclear points for free. Discussing your half-formed ideas is more fun and results in faster learning if you can unstick/learn by explaining to each other.
Some more points:
The core of learning math and theoretical CS is doing exercises/working with the concepts in your mind, writing down your proofs, and getting hints/corrections from time to time, rather than reading, watching, or rote-memorizing something. The idea is that, while doing that, one processes the material enough to become comfortable with it...
When learning a subject from the ground up, I prefer studying from lecture notes to studying a book for several reasons:
They show how many “credit points” they are worth, so you roughly know how much time you’d spend on them. You can also get a better idea of the prerequisite knowledge.
As mentioned by RyanCarey, studying all of a book hits diminishing returns. But making a good selection is hard to impossible—unless you are a professor preparing lecture notes.
You get a better model of your knowledge after working through an entire lecture vs a part of a book. You can use this to understand what material you are ready for next, job interviews etc.
Active learning (as in brilliant.org) seems worth a try to me as well, but I don’t know if it is comprehensive enough.
Usually, lecture notes are based on (and share notation with) one or a few books, which you can fall back on if you don’t understand something.
I’d be happy to tutor you; I’ll PM you more information about me :)