Basically it is something you have to grind at. Once you do enough problems all algebra will seem easy and you are done.
I am not sure that you actually need math for programming. Code is its own algebra.
Basically it is something you have to grind at. Once you do enough problems all algebra will seem easy and you are done.
I am not sure that you actually need math for programming. Code is its own algebra.
When it comes to math, I try to avoid self-diagnosing with dyscalculia or with poor working memory. Instead, I think I've gone so long with math being an anxiety-inducing subject that any time I need to solve math under the tiniest amounts of pressure, I fall apart.
Mind naming what book you used?
Schaum's Outlines are like that "Learn X in Y Minutes" site for school subjects. They give the clearest, most bare bones explanation so you can quickly identify gaps. I had the college algebra book for the required math class in technical school. Between that and YouTube, I was able to pass the class.
KA helped me go from hating math in high school to double majoring in Math & CS in college, and graduating with honors. I donate to KA now.
If you want to understand computational complexity theory, for instance, you need a different set of "fundamentals" than you do if you want to understand high-school physics. It'll be a different thing if you want to read econ papers, and a different thing if you want to study machine learning.
Within the intersection of all these fundamentals is probably basic arithmetic and algebra. Those tools are basic requirements for everything else. Beyond that, you need to define your goal before you decide what math to learn.
The main advantage of these books are its focus on building intuition by visualizing shapes or immediately rephrasing notation (e.g. 4/2 is better understood as 4*(1/2), which better explains why you should avoid cases where you divide by zero; I also found their exponent rules easier to understand, because it encourages visualization instead of just memorizing the rules).
The downside is that they're time-consuming due to a large number of exercises (I'm currently still trying to slowly work through them when I can, but if you need higher-level math in the short-term, it's probably better to start there). They're also not a free resource.
For free lecture videos, I've found Professor Leonard's lectures to be excellent, and equivalent to lectures at a university classroom [1].
How to get good with math?
Okay. Been there. Done that. Learned a lot of it. Got a Ph.D. in it. Taught it. Applied it. Published peer-reviewed original research in it. Had a good career applying it. Am using it as an advantage in the core of my startup.
Broadly, for a career in computing, at times math can be an advantage, one that might be significant, e.g., get you founder's stock in a startup that becomes successful.
Math and computing can be a career one-two punch: With some math you might find an application, maybe a valuable one, and then with some computing you get to do the associated programming. Maybe then you can show up at work one morning, maybe after doing an all-nighter, and show the final, useful, maybe quite valuable results -- done deal, no waiting, meetings, project approvals, etc.
This is a great time for both math and computing, no doubt unique in all of history. We are awash in what is in historical terms just astounding computing, and part of that is that a lot of math is just a few clicks away at Wikipedia, YouTube, in PDF files from word processing with TeX, etc.
The first thing in math is arithmetic. Of course, current computing eats arithmetic problems much faster than Godzilla eats fish.
You should know basic arithmetic for whole numbers and fractions.
Then you should know the basics of ratios, proportions, percentages, square roots and exponents, logarithms, compound interest, areas, and volumes. E.g., on my instance of Windows 10 Home Edition (that I have as a result of a sad situation, long story), the key in the upper right corner of the keyboard runs (opens, launches -- maybe computing will think of more silly synonyms) a version of an old scientific-engineering pocket calculator that has a lot of such arithmetic and math.
Uh, that software is harder to learn to use than the math it does! If you can find out how to use such software in less than a few hours of clicking guesses, you can also learn the associated math!
Then on to algebra: That subject is just doing arithmetic with symbols instead of specific values, and that should be really easy for anyone who can write math expressions in a computer language.
Then on to plane geometry: The most important idea there is triangles, especially ones with one angle 90 degrees -- right triangles. Then, sure, the biggie result is the Pythagorean theorem -- it gets applied throughout our economy and has surprisingly far reaching generalizations. For a proof, take 4 of the right triangles and arrange them so that they form a square where each side of the square is the longest side of one of the triangles and all the triangles are inside the square. Then will also see a square in the middle. Then write out the area of the squares and, presto, bingo, get the theorem. There are also 149 or so other proofs.
For a while, I taught trigonometry (about triangles) at Indiana University. The best student in the class was a pretty girl, and later I dated and married her -- see, math can be useful!
Then there is second year algebra where learn some more, e.g., about, say,
(x + y)^n
for numbers x and y and a positive integer n. From that can learn a lot about how many HEADS might get if flip a fair coin 1000 times and can understand the math shown in the baseball movie Moneyball. Also that way can start to understand the bell curve of Gauss and the powerful law of large numbers.
Might study solid geometry, that is, planes, lines perpendicular to planes, spheres, circles on spheres, etc.
Next up, calculus: As you already know, in a car the speedometer is the rate of change of the odometer. The rate of change of the speedometer is acceleration. From Newton's law of motion F = ma, that is, force is mass times acceleration, in a car you feel the force as you are pressed back in your seat when your Tesla does 0 to 60 MPH in less than 4 seconds! Going around in a circle is also acceleration, and that's why when you make a fast left turn the sack of groceries slides to the right. So, rate of change -- that is the first half of calculus.
Given all the speedometer readings, should be able to reconstruct the odometer readings, and you can: That is the second half of calculus and also is the way both to define and to find the lengths of curved lines (e.g., that the Webb telescope is following), areas and volumes of spheres, cylinders, etc.
How to learn calculus? Long story short, I was not permitted to take calculus yet so got a good calculus book and dug in. Went to a better school and started on their second year calculus and did fine. So, I never took first year calculus -- learned it, taught it, applied it, published research in it, learned math analysis (that calculus is part of) far beyond calculus, but never took a course in it.
How to learn calculus: Get a good book. At each section, (1) study the text and examples and (2) work at least half the exercises, especially the more difficult ones, and check your work with the answers in the back of the book. Don't go for pre-calculus, high school calculus, or high school advanced placement calculus. Instead, just get a good book in CALCULUS. Or get several such books. Then get a quiet place, good light, big chair, clipboard with a sharp, soft mechanical pencil, big, soft eraser and dig in. Since calculus has not changed much in 50+ years, you don't need a recent book. Instead just do an Internet search of used book sites.
I learned mostly from
Richard E. Johnson and Fred L. Kiokemeister, Calculus with Analytic Geometry.
It is VERY well written, even polished, and with an unusually good collection of exercises. When I used it, it was also used at Harvard. You may be able to get a used copy in very good condition for less than $10.
For on-line sources, my opinion is that nearly none of them are good. I've seen a lot of the on-line video sources, and I never saw a good one. E.g., last time I looked at Khan Academy, I concluded that they didn't understand calculus very well.
To learn calculus, or nearly anything in math, whether you are in a course or not, essentially you still need to study as I have outlined. Learning math is not a spectator sport.
If you have taught yourself to be good at C++ and Win32, then you should have NO trouble learning calculus QUITE WELL!
Of COURSE you can teach yourself calculus and nearly anything in math: To keep up, that is what college professors and anyone applying math as a professional do.
If you do much with computer graphics you will encounter matrix theory. That takes you into linear algebra; next to calculus it is likely the most useful math. Evidence: There are a lot of downloads of LINPACK.
Can start a course in linear algebra by considering solving several equations in several unknowns. The standard technique is Gauss elimination, and can program that in about one page of code. Linear algebra is a good start on curve fitting in statistics and the math of quantum mechanics.
If you want to understand more about cryptography and error correcting codes, you should study abstract algebra. Here I would suggest that you actually take a course (a) to help you get through that quite different world of thought and (b) especially to learn how to write proofs. And for (b), take a course where the prof is really good and also carefully reads and comments on your proofs. Abstract algebra is the easy place to learn to write proofs.
Can get more guidance on how to learn math at
https://news.ycombinator.com/item?id=28215105
Somehow long, maybe still, knowledge of both math and computing can be welcome and lucrative in parts of US national security. That was the case early in my career when my annual salary was 6+ times the cost of a new high end Camaro.
Soon FedEx had what their founder, COB, CEO called their "most important problem" -- fleet scheduling. The BoD was concerned, and crucial funding was at risk. I typed furiously, wrote some software, the output "solved" the problem, enabled the funding, and saved FedEx. There, sure, needed to calculate great circle distances so used the law of cosines for spherical triangles -- solid geometry can be good stuff! Also had to handle wind vectors -- linear algebra can be powerful stuff. Then I went off to do much more, integer linear programming set covering where can discover much of the motivation for currently the most important problem in computer science, P versus NP.
Later the BoD wanted some revenue projections. I did a little with some calculus and got a nice answer. Long story short, that work saved FedEx a second time.
For another long story -- I needed to be better at office politics -- I just missed out on some FedEx stock that should be worth ~$500 million now.
The US Navy was collecting ocean wave data at sea, and I was in a software house bidding on writing some software to analyze the data. One customer engineer wanted (a) to know the power spectrum of the ocean waves (that is, what frequencies have the power) and, then, (b) to generate synthetic, random ocean waves with that power spectrum. I quickly read a book by Blackman and Tukey, typed in some software, showed the engineer the results on how to find the power spectra (with an important point about handling low frequencies) and how to generate the synthetic waves, and our company got "sole source" on the software work.
Later at IBM's Watson research lab, we were doing AI for monitoring of server farms and networks. I thought of another way, for some of the monitoring much more powerful than the AI, based on some original math, and published the results.
Net, some math, especially through calculus and linear algebra, can at times be an important career advantage. For more, get good with probability theory, if you can, the version based on the subject measure theory. Then learn some about stochastic processes. E.g., once the US Navy wanted an evaluation of the survivability of the US SSBN (missile firing submarines) fleet under a special scenario of global nuclear war limited to sea -- in two weeks. From some old work by B. Koopman, I saw a continuous time, discrete state space Markov process subordinated to a Poisson process, wrote some software, and was done on time. My work got reviewed by a famous mathematician, and he questioned how my software could "fathom the enormous state space". I answered, at each time, the number of SSBNs surviving is a real valued random variable. It is positive and not greater than the number of submarines to begin with so is bounded and has an expectation and a finite variance. Then the law of large numbers applies. So, generate 500 independent sample paths, average them, and get the expectation "within a gnat's ass nearly all the time". He agreed. I passed the review!
If you go for a Ph.D., then understand that, in the US, academic positions at the better universities are about three things, research, research, and research, especially because that leads to grant money. The operational definition of research is that it got published in a peer-reviewed journal. If you publish, say, 3 papers a year, then likely people will stay off your case and you will likely make progress to tenure. People making the promotion and/or funding decisions will rarely look at the papers and, instead, just count them. Papers that result in prizes are usually quite powerful for a career. Generally, though, academics is not very promising for providing a good standard of living and good financial security for you and your family and these days can't hope to compete with what is available in computing, the Internet, etc.
Then the math? It can be an advantage. The "advantage" can have you push ahead, maybe by a little or a lot, useful technology, economic productivity, and civilization. Such progress happens, actually fairly regularly, but is rarely easy. So, if want to push civilization ahead, (a) don't expect that the work will be easy but (b) math can be one of the most powerful advantages.
Now you know some of what I wish I'd known at the beginning of my career. I want a do-over -- where can I apply?
For those who are uninitiated all of these tools can be difficult to remember (long-term) and correctly apply (sometimes creatively) to arrive at a solution.
Dyscalculia and poor working memory can be issues if your aim is speed and conciseness which is critical during an exam but not as necessary if your goal is to simply understand at a deep level.
I returned to grad school at 27 for math and had trouble passing qualifying exams. I ended up using spaced-repetition to memorize large sections of books and old questions. I had previously shunned memorization... but coupled with focused practice it is a powerful tool. Memorizing forces you to distill the material and patterns to their essence and allows you to recognize the patterns in new situations.
And just like lifting weights, you will lose it when you stop doing it.
I remember doing the CFA program which is math and formula heavy. I had hundreds of formulas memorized. I couldn’t tell you the formula to calculate the standard deviation of a portfolio of three assets now if my life depended on it.
I remember very, very little from the CFA exams (passed L3 about 10 yrs ago), because it tested surface level knowledge of an incredibly broad array of subjects. Far too broad to allow a deep-dive in any one thing. At the time, I could fit a bunch of formulas in my head and regurgitate them on command, but it was like filling up a leaky bucket. I had to load that sucker up and run into the exam center before it poured out.
IMO testing well is it's own skill, and has little to do with understanding a topic. Understanding is when you've forgotten all the stuff you've memorized, but you can work your way back to a solution from first principles. I think the only way to get to that point is genuine interest and sustained study.
While this is 100% true, I hate putting it that way because it makes weight training (and mathematics) sound like drudgery. The way I like to think about it is that if you want to stay strong, you have to push against resistance on a constant basis.
It's the same thing with math. You have to exercise that part of your brain with algebraic resistance.
We can all improve our abilities, but those not gifted has a much steeper hill to climb.
And just like working out some people will progress more rapidly than you and have an easier time at it. So what? As long as your goal isn't to 'place' at the elite level, this is irrelevant. You really just need to show up and embrace the struggle. (For elite level tasks including grad school, its a bit more involved.)
https://youtube.com/playlist?list=PL0-GT3co4r2y2YErbmuJw2L5t...
For more advanced linear algebra I would recommend the class from Prof. Gilbert at MIT.
https://youtube.com/playlist?list=PLE7DDD91010BC51F8
https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra...
What is your recommendation?
There's another guy, Jim Hefferon of St Michael's College, who has written a full book for his own class and produced a full video course on Linear Algebra (all free).
https://hefferon.net/linearalgebra/
I also believe that is quite naive thinking that you can learn math in some depth just watching videos (at least with my capacity). For me it is a way to keep some pace and order when learning and, as you say, to find some bibliography and material that is being used by the professor.
For example, this goes right back to basic algebra but is a very well explained with the afore mentioned visualizations.
Veritasium - How Imaginary Numbers Were Invented https://www.youtube.com/watch?v=cUzklzVXJwo
Like, when they say something is easy, they might mean "It's easy if you know all this foundational stuff that you could learn in six months".
Everything else technical has shortcuts. Nobody knows how WiFi works, they use a module. If they do, they're probably a specialist.
But math has almost no shortcuts almost by definition. If it did we wouldn't call it math we'd call it using a math library.
It's the same shock I have practicing music, or why I can't drive, or why it takes me 2 whole minutes to line up a jig to cut a 2x4.
What programmers do is on the screen more than in the head. There's no "practice this kick 10000 times". When you see drawPixel(x,y, hexcolor)... that's... all there is to know about that function besides how long it takes.
Things that DO require skills that have to be learned, rather than just facts you have to be familiar with, seem shockingly difficult compared to anything in a JS app.
I went through precalc in school, then promptly forgot most of it once I started working. All of the bits I had learned felt rushed, so a lot of them fell out of my brain even while in school. I only had a basic understanding of most of what I "learned".
About a year ago I decided to go back to basics, and start over from zero on Khan Academy. I've been v.e.r.y slow, maybe a lesson a month on average, but have been grinding through the lowest level math to really understand and remember it. Down to addition, subtraction and multiplication even - I've relearned how to multiply small numbers in my head, and gotten much better at quick mental addition and subtraction.
I have scheduled and dedicated more time for it this year, so I hope to catch up to my original math basis. This time, hopefully, remembering all of it instead of skimming. That should set me up well for linear algebra, and then calculus next year and beyond.
One thing that may help regardless of how you choose to learn: pick a problem you want to tackle that needs Fancy Maths. It doesn't need to be anything useful, or anything difficult like "prove this unproven theorem". It will motivate you as long as it keeps your brain engaged. For me it's factoring and primality proving, where I can't even read the equations / algorithms because I don't have the basic tools. As I get further along I keep looking back to those problems and seeing how the bits I'm learning apply around the edges or to simpler factoring algorithms. It keeps me motivated to learn more to be able to dive deeper into the juicy parts.
Same happened to me. I completed a BS in CS and learned just enough algebra, trig & calculus to pass the classes and then forgot almost everything. Many years after graduation, I came across an interesting post in comp.lang.java - somebody was asking how to create a java applet that could draw a 3D block arrow that could orient itself in any direction. I'm pretty sure somebody was asking for help with his homework, but I thought it was an interesting problem so I started looking at it and the first issue I ran into was drawing a line perpendicular to another. I vaguely remembered that there was a formula for computing the slope of a line perpendicular to another and when I looked it up - in context to a problem I was trying to solve - it just kind of "clicked" and I found it interesting. From there I fell down the rabbit hole of re-learning everything up to differential equations that I was supposed to be learning when I was an undergraduate.
There’s absolutely a component of learning the concepts, but a huge part of being good at the math is just building up the mental muscle memory for symbolic manipulation. Sure there’s innately talented people out there, but the consistent application of incremental effort will get you very far regardless of talent.
I didn't appreciate this until I was a graduate physics student and was frequently frustrated by minor algebra errors in long, complex problems.
What's worked for me is to develop an intuition about how things 'should' look, so that if I do make a mistake I'll get a 'hey, that's not right' feeling a couple steps later.
This is something I've taken to heart professionally too. If the equations are getting out of hand it's either wrong or I need some simplifying assumptions (like that cow needs to be spherical). Otherwise one just can't keep track of it and reason about it.
If I need a more precise answer, that's what computer numerics is for.
Fast arithmetic and algebra are fairly particular skills. As one progresses into new world of math, the calculations and operations may be completely different from what's been practiced, making the fast math less useful. But a good habit for careful progress is completely general!
Learning to find and correct your mistakes will at first make it take ten times as long to solve any problem as just scribbling your way to an answer. But if you practice it, you will discover two things:
- with practice, the overhead of finding and correcting mistakes drops significantly,
- the feedback you get from noticing your mistakes helps you avoid making those mistakes in the future. Eventually mistakes become extremely rare, and you can go through a very long computation without making a mistake, even if you don't bother checking for them any more!
(sorry for the shameless plug)
I remember my last math class: Number theory. I got through the final, shook the professors hand and told him, "this is the end of intellectual ability". I have never seen a professor laugh that hard. Once you get past abstract math classes thin out fast and it just gets weird.
Did it ease your midlife crisis? Would you do it again?
My second year of university is where i fell off math.
Several people have told me that once they reached post graduate level at university that math made sense to them. They saw the perspective of unified math. How it all fits together.
Sadly, all I did know I have forgotten.
- you don't really "learn" math, you just get used to it
- math is really mental gymnastics, and "learning math" actually is doing a lot of math exercises