As a self taught programmer I feel like I have a big gap on my math knowledge, where can I start learning math concepts that will help me in my career?
Chances are you actually suck at algebra. I went through this issue when I started electrical engineering as part of an overly elaborate midlife crisis. I got the book in the bookstore that was supposed to bring you up to high school level and just did all of the exercises. Then I did a whole lot of exercises for the introductory university math courses.
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.
The problem for me is identifying where exactly in my mathematical fundamentals things fall apart (like with prime numbers, some basic arithmetic, geometry) that makes higher-level math a struggle conceptually. It's always felt like there were holes in my fundamentals. I suspect the only way to figure this out is to go back and do everything again either through Khan Academy or books. Does anyone else have this issue?
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.
Try Khan Academy. The exercises (especially with how they focus on mastery), coupled with the videos will help you root out your weak points and even master them. Do not be ashamed in starting with the kindergarten math topics and moving upwards from there. If you are able to power through it, good on you. If you get stuck on something, even better -- now is your chance to master it.
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.
For books on strong fundamentals, you can try the Art of Problem Solving series [0]. They suggest a curriculum to start with prealgebra, move to algebra, then counting & probability, then geometry, then precalculus, and finally to calculus (though a regular calculus book like Thomas Calculus/Stewart Calculus/even Spivak/Apostol would work fine).
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].
Try ALEKS. It's basically an online grind session that identifies which underlying concepts you've got wrong or haven't got, and builds you toward them organically. I recently used it to get myself sufficiently intimate with trigonometry that I don't have to stop and look things up all the time "just in case." It's not free but it works well: https://www.aleks.com
"Mathematical fundamentals" is a sliding scale. You have to define your end goal. What do you want to understand, that you are currently unable to understand due to your incapacity with mathematics?
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.
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.
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.
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?
I have the same problem as you, I just don't know the fundamentals at math. So I decided to start from the beginning with basic arithmetic. You probably should ignore book recomendations like Spivak for now. The books that I use right now are "Arithmetic for the practical man" by "J. E. Thompson" and "The Number Devil: A Mathematical Adventure" by "Hans Magnus Enzensberger" which is a childbook.
There can be quite a few techniques, theorems, and facts at play while working through any given problem.
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 second the grind. There's not really a shortcut... like lifting weights or practicing scales/rudiments.
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.
There's not really a shortcut... like lifting weights
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.
This is my main qualm with testing as a means of validating understanding. If you truly understand a topic, you will probably pass a test on it. However passing a test most definitely does not guarantee understanding.
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.
And just like lifting weights, you will lose it when you stop doing it
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.
I am a big fan of the working out analogy. In all cases you need to have a decent plan then execute-- basically this means showing up and putting in the work. If you do it right it should be a bit painful at times.
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.)
I agree there are no shortcuts, but just like the scales will come much more easily to someone naturally gifted at music, so will algebraic operations to someone gifted at math.
We can all improve our abilities, but those not gifted has a much steeper hill to climb.
It's good for concepts but you can watch all his videos, think you know what linear algebra is about, and still not know how to calculate anything. You have to do exercises if you want to actually learn math.
I made that mistake when I started university. I managed quite well in high school without doing lots of exercises. Didn’t work quite as well later and I had to sit and really work through the exercises.
3B1B has stated that the series is mostly useful for summarizing or augmenting existing knowledge after taking the class; it's not for learning Linear Algebra fresh. If you sum all the minutes in the 3B1B videos it's basically the length of one video from a university course.
I'm not sure about recommending video courses because... there are so few people who have taken up the burden of producing a full Linear Algebra video course. It's sad. But I would at least say that whether you're following Gilbert Strang or someone else, you should be following with a book as well.
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).
I totally agree with you and that is why I have also added to the post the link to the open course MIT site.
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.
I think the sort of visualizations that are around on Youtube are great for those who don't "get" maths easily and need another angle to help them understand. Although 3Blue1Brown is not for beginners there are other beginner resources.
For example, this goes right back to basic algebra but is a very well explained with the afore mentioned visualizations.
Not to pick on your response, but every time I see a thread about not understanding math, I think *my people!!!*. I come to these threads hoping to find answers, and all I see are “read this calculus textbook” or “3blue1brown”! I watched this whole linear algebra series about 7 times and I just don’t get it. There’s something about the way people explain math that just isn’t intuitive to me, like it’s too disconnected from reality or something. I wonder if I’m not the only one…
I really really think math is in fact harder than other things people do, and math people are using weird definitions of words to hide it.
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‘ve enjoyed revisiting topics I learned in school through the Kahn Academy[1]. You can pick any topic you want to start with and follow it through as far as you want.
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.
100% agree this is something you grind at. Calculus, even multivariate, and even the stuff beyond that, still grind. I used to be really good at it, definitely not the best but among the higher scores in my college math classes. But 10+ years later, when I go and look at stuff that would have barely fazed me then, I go cross eyed now. I remember the concepts, vaguely, but following the math and linking together the various theorems and transformations feels like wading through syrup. It’s a problem for me as I’m trying to dig into data science stuff, and it feels like getting back into marathon shape after 10 years of not running.
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.
Agree with this and would also add: in addition to being able to do algebra fast and have it be second-nature, at higher levels it helps if you are able to do it 100% accurately. 5 nines isn't enough.
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 important isn't being able to do it right quickly the first time. It's having a strong habit of checking your work as you go, both at a low level and a high level. (Kinda like unit testing and integration testing...)
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!
I've known a lot of mathematicians, some of whom were really good, and five nines (one-in-one hundred thousand) is an implausibly high standard for humans to reach. I'm certainly nowhere near there.
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.
Just to expand on this, when I worked as a grader in college I noted on engineering test keys the professor's answers were always roughly three short lines of handwritten equation. But the student's answer section were often totally darken with pencil they wrote so much. The heuristic was definitely the longer the answer the more wrong it was.
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.
Perfect accuracy is an insane goal. Much better is to develop the skill of finding and correcting your mistakes. Part of this is doing frequent "sanity checks" - for instance, if you are computing an area, and you get the answer -3, probably you made an algebra mistake somewhere earlier, and you should find and fix it before going on (some ways of checking your work also help you pinpoint where the mistake occurred, others are less helpful for that). Another way to check your work is to try plugging in numerical values for all of the variables and going through the arithmetic to check all of the steps (if you need to check your arithmetic, try something like "casting out 9s").
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!
If anyone is looking to brush up on their Algebra fundamentals, I built an app for that and it's free to use: https://apps.apple.com/us/app/pensend/id1571322730. I had a similar problem where I didn't understand where my fundamental knowledge gaps were so I ended up starting from the beginning (pre-algebra). I hope this is helpful for people!
IF!! You have kids learning math is right there with a full program. I forgot all my math so I keep up with my kids and help at least 15 minutes per day. I have been tripped up with 5th grade word problems - it is fun. Follow along with your kids math - it will move quicker than you think.
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.
I hadn't thought about it that way. I was good at algebra, but can't get through calculus to save my life. I've mostly found that coding is more about logic than math. When math has come up in my work, it's generally a formula or calculation that's already defined and I just have to code it into a system, which has never been a problem for me.
Anyone who sucks at algebra and has a low grind tolerance should try https://dragonbox.com/products/algebra-12 It’s very well made. And, it’s designed for 12 year olds. So, adults can usually manage to keep up.
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.
Out of curiosity, what does it look like to not-suck at math?
Do you wake up in the morning and are reminded of constants and theorems in everyday things and laugh empathetically with donuts as you recognize your shared absurd topological homology, or go to the office and automatically recognize what's possible and not from its implied complexity class in office conversations? Are you checking Bayesian priors in your interpretation of the news or other risk?
This is only half kidding, as I also identify as useless at math, but I think its words and concepts can be very funny, and I wondered what someone who actually knew this stuff might think about. It begs the question of what one is actually doing when they are doing math as well. Are you reasoning with abstract and quantitative models, are you writing papers and proofs of new ideas, or are you encoding a narrative dynamic into a symbolically defined logical relationship? Maybe you're just being recognized as a peer by the community of people who recognize each other as good at it?
When I learned music again later in life, I found I appreciated the same things, but with better intuition and words for articulating and reproducing them. Working musicians have a trade where it's expected they can show up and perform in a group based on sight reading of the notation, same as a programmer.
All this is to say, I see a lot of these "I can't math / how do I math" threads and am always interested in them, but maybe we should start with, "how does anyone math" first. So, how do you math?
I'm no mathematics savant, but math has always been easy for me. I never recall struggling to understand concepts, even through my university degree.
What I vividly recall is my fascination with algebra and geometry as a child. While on hikes I would imagine the equations necessary to approximate the flora around me, to calculate the parts of the rays of light, and so forth.
And while I never applied myself strongly to homework, I did pay with math as I've would pay an instrument.
That is to say, this should sound like how musicians describe hearing the music of nature, and their fascination with sounds and musical theory.
Math is an instrument that one can play to make beautiful music.
> Out of curiosity, what does it look like to not-suck at math?
To me, it looks like the rest of your comment, wherein you casually mention constants, theorems, topological homology and other concepts that don't even come to mind for many people who self-identify as being bad at maths (as I do).
Thank you, but I am mathematically illiterate. I can't identify greek letters after sigma without looking them up, I ignore equations in papers and other texts unless they are supporting something that offends me, I don't have a working understanding of why certain operations are meaningful or their uses other than knowing there is probably a python library that does anything I could need.
However, things have shapes and relationships, most of which we can't physically see, but we can reason about and compare them, and that's about as deep as I get. e.g. do things at a certain level of abstraction have a similar shape, and what are the words that describe that? Does this tell us more about the thing itself, or the limits of our ability to percieve it, and it's just an artifact of our lens? It's like having an ear for music, where you hear fragments of other pieces in everything, and interpret forms and symmetries and respond to intuitions, expectations, and resolutions - but not being able to play it.
I think we're entering into an era where we can finally have punk math, where some idiots get on stage and the people watching them go, "omg, this is terrible but fun, and I could do this better," and a thousand bands get launched. When I write stuff like that, it's because I don't mind acting as one of those idiots. I figure if most of my favourite bands can't read music, there's interesting math to be done by people who aren't proving anything or making progress, but intentionally or not, like all idiots, they exist as an example to inspire others. :)
> Out of curiosity, what does it look like to not-suck at math?
The speed at which you an understand, internalize and can put to use a new concept when it is presented to you.
This is usually combined with the practice of the trade providing you with actual pleasure, which is, of course, a self-reinforcing loop.
Some folks can take a single semester of linear algebra and absorb the majority of the thing, including learning far more than the course required because they truly liked it.
Others can take the first half of their career to finally understand the ideas and apply them properly.
Knowing how to solve problems in a mathematically precise way, such as writing down the formula for the expected value of a path-dependent investing strategy an hour after conceptualizing it. Like being a handyman but the formulas are your tools.
I have ten or so tantalizing questions which I don't know how to solve stuck in the back of my head at all times. Some of these are truly hopeless (i.e. P vs NP), others seem like something I can probably figure out but just haven't found the right perspective yet (these tend to be more obscure). This list of questions changes over time - sometimes problems actually get solved, sometimes I lose interest in them, sometimes I learn about a completely new area and add a bunch of new problems to my list of things to think about.
If I'm at a social gathering and the people are boring, I take out a piece of paper and start trying to visualize some aspect of a problem I've been stuck on for a while, or compute what happens in some particular special situation. In order to carry out the computations, I find myself making up paper-and-pencil algorithms, typically variations of dynamic programming with some specialized bookkeeping notation so that I can see at a glance what is going on on the paper. My scribbles probably only make sense to me - lots of bipartite graphs with labeled vertices, or directed graphs with decorations on their edges, or sequences of column vectors full of letters instead of numbers with groups of little dots underneath them, or attempts to draw small three-uniform hypergraphs...
Every so often I manage to rephrase one of the problems which is stuck in the back of my head in a new way. Then I think, hey, wait - maybe someone has studied this type of problem (i.e. the rephrased problem) before! I search around, and find some research area that is almost but not completely unlike what I was hoping for, and try to read some introductory material about it. Maybe I download a textbook on, say, "unification", and just read the chapter on "confluent rewriting systems", since I think those might help with the algebra problem I'm interested in. It doesn't, but it gives me a new pencil-and-paper algorithm to play with, so I fill up a blank piece of paper trying it out.
I also have an infinite backlog of books on math that is just plain interesting to me, but which I don't expect to find any use for. Things like advanced set theory, which is interesting from a philosophical point of view (how do we come to be convinced of new axioms? Is it possible to become convinced that "measurable cardinals" really exist?), or average case complexity (is providing a theoretical foundation to cryptography hopeless?), or statistical mechanics (what are all those physicists talking about when they bring up the "Ising model"?). I go through these at a much slower pace, sometimes only getting through the introduction before I have to put them to the side to focus on other things, but occasionally I get a solid two weeks of uninterrupted time to focus on one of these and blow through... well, the first two-thirds of a book, putting off the last third to some time when I actually need to know it.
About once a year, I'm in a situation (often a conference, sometimes an unusually interesting party) where there is someone else I can talk to about my interests.
I think when people say they suck at math what they mean is; I find math homework extremely boring and unrewarding. Which perpetuates sucking at math and only compounds. Then things get worse as modern society works better for the individual when one does not totally suck a math.
Kinda like, I suck at piano because I find practicing the piano boring and unrewarding, but without the ramifications of sucking at math.
Agree! I’ve seen many a mathematics professor struggle with math. It’s not innate to any of us. But certain of us have spent more time with it and seen more of it. The time and familiarity eventually goes a long way - to a phd, even.
Agreed, although it's good to recognise what your strengths and weaknesses are. I would argue it's often better to focus on being great at the things you're good at than trying to be decent at stuff you really struggle with. If OP struggles with math they may be better off focusing on something else, at least if they're optimising for career success. If you're optimising for happiness and enjoy math problems then ability doesn't really matter.
I suppose depending on how extreme we're going with unfocusing on math.
But one doesn't really get to ignore math in life because of money. You'll still need to figure some things out. I can say I'm a poor painter so I'm just going to ignore that and things will be fine. The cost of ignoring math can be quite high.
I am beginning to think “I suck at math” less and more of “I’ll never be good at it”, from the comments on this thread.
I absolutely despise grinding and drilling uncontexualized and contrived problems and have never been able to maintain something stuff like that for very long. Which of course becomes problematic at I find myself interested in problems that require a decent grasp on some math.
The grinding is, by analogy, equivalent to the "reader" books in many languages. "See Spot. See Spot run. Run Spot, run!" level and then up. It's very hard (for most people) to jump from "I now know the English alphabet" to "I can read any article in a literary magazine." Many people forget that they went through that process because they did it so young, but also because language (written and spoken) is far more pervasive than mathematics. This pervasiveness means that you have less "grinding" to do, because you get to learn just by being in the environment the language is used in (if it's your native language, or if you can afford or are otherwise forced to move into an environment where it's the local native language).
Unless you're like me as a kid, you don't look around and start counting, adding, and multiplying based on the objects or scenes that you see, and "thinking in numbers". Thus the need for grinding, you need some math fluency (which takes practice to develop and maintain, like any other domain) before you can move on to more advanced topics (at least easily). If you lack fluency, even at a low level, then you have to do a refresher every time you try and get to something moderately advanced. Which is frustrating, at least, if not demotivating to the point of causing most people to stop. The more fluent you are, the easier it is to pick up an arbitrary advanced topic (at least to read, if not to apply or extend).
I learned math in uni. I respect your question a lot because it shows you want to learn more.
Math is not a topic. Math is an activity. A lot of "math" courses are memorization which completely defeats the purpose. It's like memorizing a few programs as a way to learn coding -makes 0 sense and it's kinda sad.
To learn math you need to know how to prove things (as with coding you need to know how to write programs). Proof techniques are the foundations of math. You have to practice proving things or else you simply don't know math.
(Math proofs are the format for Google code jam solutions for what it's worth.)
Last time someone asked this here I found this textbook[0] Please look, the world would be better if more people knew how to math.
You may need someone to evaluate your proofs for mistakes my email is on my profile.
The thing about math is that it just boils down to simple rules that have wide ranging consequences and interrelations.
To keep from being overwhelmed, pick a problem and try to focus on only the information relevant to that problem.
I sucked at math as a small child because the social message teachers give that math is hard did not really make sense in light of boring arithmetic so I thought I was missing something. Turns out I wasn’t.
Go into it driven by curiosity. Focus on building strong fundamentals; algebra and trigonometry are very useful. Then look into calculus or linear algebra.
Make sure to solve actual problems for practice. But spend plenty of time researching. Take notes. Write out all the steps in your problem solving so that you can debug any mistakes.
Lastly, have fun! There’s a lot of neat math out there, treat yourself to some research into whatever is interesting to you when you get sick of grinding on the fundamentals.
Yes. I'd encourage people to not be afraid to check out random math topics from wolfram's site. I killed a lot of hours in undergrad that way and it's helpful in non-obvious ways.
Personal advice: unless you have a very specific reason to do so, completely pass on advanced calculus, real/complex analysis etc., and continue with discrete maths instead - you will find it immediately useful. Only later, when you find you need it, choose other topics, carefully selected. We only have so much time in life, and the range of fields to study is enormous, so choose wisely. Don't blindly follow the advice of people who will tell you to study everything, you will soon realize it's impossible and it will only leave you sad.
Time. Be honest about how much time you’re willing to invest into understanding math. You can understand math if you’re willing to give it the time, but without that time you’re likely setup for frustration.
Where to start?
Math is huge. I suspect discrete math may be the most useful to a programmer who’s looking to just be a more theoretical programmer. Proof by induction stands out as a core, helpful concept too.
Otherwise I suspect it’s about problem domain. Geometry has its uses as does algebra. It all kinda branches from there.
I recently faced the same realisation. I'm a software engineer with several years of experience and somehow felt like I didn't know enough about formal computer science/math to tackle the problems I found most interesting (usually very abstract, foundational stuff).
One day I decided to go to a physical bookstore and buy a bunch of books from the Math and Computer Science sections and started from there. It was probably not the best way to start but A START nonetheless. Given that I really enjoyed reading about these topics, I decided to enrol into an online university to pursue a degree in Mathematics.
The book I found the most useful was "How to Prove It"[0]. From my point of view, it was a great starting point for two reasons:
* It is approachable (specially for Software Engineers) without being boring. You start building intuitions and it really ignites your curiosity.
* It is also sufficient for understanding proves and mathematical notation/language. This is an important building block that will allow you to start tackling the branches in Math you are interested in.
Nice, I'd been looking for a good book that explains the context behind the conventions and thought processes. So many articles/websites/books claim to start out at the basics, but then they toss a bunch of confusing shit at you with barely an explanation. It's very demoralizing. I'll pick this up, thanks for the recommendation.
I'm currently going through "Math for programmers" (Manning Publ.) and I enjoy it immensely! A lot of math books can feel too abstract and dry but this book was perfect for me coming mostly from a programming background.
Start learning learning linear algebra and you will soon find yourself in graphics programming and game engines. That's where I am at the moment and I feel I regained my passion for programming after years in webdev..
I completely agree about a lot of math books seeming too abstract. I hated math until I took an interest in physics and realized I needed math to understand the ideas being presented. Suddenly it clicked that the math was actually a way to better represent the ideas, not just a trick for getting answers. Seeing how math applies to create and represent knowledge gave me a huge appreciation for it.
Silvanus P Thompson | Calculus Made Easy (html book) - https://calculusmadeeasy.org/ (This shouldn't be your only exposure to Calculus. It is more for building intuition.)
The Discrete Mathematics course above is probably the most important for your work. In fact I would look for more Discrete Mathematics courses if I were you as it is far more important than anything else here.
Marco Taboga | Probability and Statistics & Matrix Algebra (html book, need calculus) - https://www.statlect.com/
On YouTube you can literally watch a good lecture course for just about any typical undergraduate course. You just need to know where to look. Also there are even some really good master's degree courses out there.
Of course the only way to really learn the mathematics deeply is to "learn by doing", aka problems and proofs.
There are a ton of channels starting to pop up like Grant's 3B1B (I find like a new one every week). He had a contest recently so maybe look at some of the winners.
Lastly this is pretty useful if you get into higher mathematics:
I'm the same. Self taught, brain is not mathematically oriented and it feels like a gap in my abilities.
People will often say something like, "You don't really need math" for programming but that is missing the point, in my opinion. The point is that it feels to me (after many years of experience and working with many great programmers) that people with a mathematically oriented mind tend to find certain common programming realms easier to grasp. It makes them faster and more productive as they almost intuitively "get" things that are oriented in the same manner as their brain already works.
For others (me) I have much more trouble in these areas and have to really pound my head on the problem to even get close to understanding it as fluently as they do. They probably do not realize this but it's a real struggle (I've had a few occasions where the other person seemed genuinely confused that I was not really "getting it").
Same. I definitely don't need math in my day-to-day. But I've been working on this side project for years, and haven't made much progress because I've hit a ceiling that requires math to transcend.
This is a big coincidence for me, a few hours ago I posted a reply to someone else saying I've decided this year to plough through khan academy at least until I can do some calculus.
I'm in the same boat as you I think.
I'm 40, work as a programmer and I have a fear of being found out for not know enough maths.
I was a ‘math prodigy’ in school. To me mathematics was always about solving problems, learning any theory/apparatus makes much more sense when you understand what problems it helps you solve. As a programmer you probably have a problem-solution mindset too. If you just have fun solving problems and slowly build your mathematical foundation from there, you’ll probably discover that you don’t suck at all, just the way you were taught mathematics at school was too dogmatic.
Any edition of "Mathematical Ideas"[0] might be a good place to start. While it may seem too basic for some, I feel that it covers a lot of concepts and material that are very useful when programming - problem solving, set theory, logic, number theory, basic algebra, etcetera - and does so in a way that is gradually cumulative and not so daunting.
Maybe this book will help you to realize you don't really suck at math, you just had some terrible teachers or whatever. It's also a great introduction to many different mathematical subfields so you can see which ones are most interesting/useful to you for future study.
What do you want to learn? And what area do you want to work in?
From a CS view math is:
Discrete math and combinatorics? Really useful for proving algorithm properties etc.. graph theory is useful as well.
Statistics? Extremely useful.
Linear algebra? Extremely useful as applied to statistics and deep learning.
Theorem proving? Useful for determining program correctness, important in some industries.
Of these, I think stats and linear algebra are the most fundamental. You can use these to build models of things and estimate parameters and create predictions.
I think the critical piece is to learn how to apply these tools/concepts correctly to solve problems, determine when they are valid / what the limits are / and how to intellectually debug them.
Otherwise learning about algorithmic complexity and how to solve CS type problems with algorithms is more likely to help your career.
A related question: which part of math can be used to model object-oriented programming? AFAIK set theory deals purely with associations of objects, not how you make new ones. HS algebra is concerned with simplifying and inverting numeric equations. Meanwhile abstract algebra (and number theory) is concerned with finding talking about broad categories of numbers, relating those categories to each other, and making new, presumably interesting (read: surprising) statements about categories of numbers. Math is a study in "going meta" since each component of each activity gets a name, which are further grouped and named into other categories, limited only by what the thinker can stomach/finds useful.
But I am hard-pressed to think of any mathematical construct that reflects, even a little, the reality of OOP. This is evidence that OOP is an engineering concern, not a math concern. That is, OOP is one method to help humans deal with the complexity of a large amount of shared, mutable state (SMS), by partitioning it into smaller units of SMS. But math itself doesn't care about the scale of anything, and will happily encode any state into a single, very large integer, if you let it.
Some parts of programming are better grounded in math, like functional programming and relational algebra. Some distributed programming problems have some nice, ad hoc mathy treatment (e.g. Paxos), but don't really have a clear correspondence to anything.
Interesting the field that is closest to programming in real life, IMHO, is statistical thermodynamics. This is usually taught as part of the physics curriculum, and is pretty math intensive, and the field's remarkable job is to generally model microscopic behavior and then predict macroscopic behavior of huge aggregates. Programs always deal with huge numbers of tiny things, each having unique degrees of freedom, (alternatively, which have unique constraints), so there is some connection there. ST is also the field most closely related to certain "quant" jobs in the finance field, AFAIK, since the same tools let you model individuals in an economy and from that predict markets.
Identify the concept you don't get and read! Specifically read a _variety_ of explanations on every concept you struggle with. Eventually you will find or form a point of view that will make it clear. There's no easy way, no one source.
Are you sure you suck at math? I used to think I sucked at math (now I think I'm merly bad at it). Turns out I suck at numbers. I can't get a feel for them. Manipulating equations and such though I found quite easy back when all that was fresh in school.
As for career advise, depends on what you want to do: There is not much use in learning calculus if you end up in astatistics-heavy field like data science. I'd say figure out what kind of computing you want to work with and see if there is a specific part of math that are useful there, if there even is one.
I've done work for finance and never had to go much deeper than simple multiplication.
I thought I sucked at math for a long time, reinforced because my math teachers in school believed it too.
Turns out I suck at spatial thinking. I can’t manipulate things like plots and curves in my head and they don’t help me understand mathematical principles. Algebra and logic though come easy to me. So learning math became an exercise in translation.
That is to say, please don’t think you suck at math and definitely look at different ways to learn the same concepts if something is not clicking.
Agreed, I've used trig once since I left college for an image manipulation problem. Discrete mathematics, Algebra, statistics, and depending on the roles ... linear algebra are far more likely to be useful.
I find it helpful to start with "quantitative reasoning" instead of "math" if you're not math person... Math people speak "math language" which can be frustrating if you're not cut from that cloth.
IMO "I suck at subject X ..." simply means the amount of work/time you're going to need to invest to master subject X is larger (sometimes much larger) than folks who have a knack for it.
It rarely means you're completely incapable of mastering subject X.
The real question is: is the investment worth it? If it takes you 5 years to master basic linear algebra because your brain truly isn't wired for it, how much is the 5 years you are going to spend going to pay back in the long run?
Oh, and: actually enjoying doing X is usually a tremendous help towards mastering it.
One interesting fact that you may not know is that the often assumed symbolic notation of algebra (and the rest of mathematics) is fairly recent: that is, the likes of Euler and Fermat were known to write out the entirety of the mathematical logic as a "word problem".
Why I bring this up, is because often I've thought that the innovators of mathematics probably benefited from this action: probably it is what enabled them to solve and derive problems we still today have difficulty resolving.
I bring this up to highlight a point about the philosophical underpinnings of mathematics--that as necessary as it is to understand the syntax and grammar of mathematics today, it is just as necessary to wrestle with the ideas in a form more palpable to your mind: language.
So what I'm saying, really, is that if you find yourself having difficulty with mathematics, as much as it is a matter of "doing the work" (solving the problem, crunching the number) as it is with any other skill, it is as equally important (and maybe even "more" helpful) to approach and take on the logical reasoning as a function of what you can put into words... At least, doing so, I think and hope it would help you render yourself more capable of tackling mathematics.
A good book to start you off in this way, is Bertrand Russel's Introduction to the Mathematical Philosophy. If you have to read it several times, it's been shown rewatching something as higher playerback speed is more effective than just reading it once, so don't be afraid to reread sections (or even in math) as many times as it takes for the knowledge to become explicit to you.
Oh and Khan Academy is a great resource.
Finally, if you have some money you can definitely find a math tutor--if you can find one who you can relate to / who speaks to you, it'll make a radical difference too.
Hope this helps!
Afterward: if you want a problem that'll stump any mathematician, take a look at the Collatz Conjecture: very simple, but understanding it might help you understand how to approach problems in mathematics (although this one has still yet to be proven, and as Paul Erdos said, mathematics is still not yet equiped to prove it, despite how simple it is).
Start with algebra. As a former math educator and curriculum designer if you're an intelligent adult the best educational materials for this (and most basic subjects) ever created are from the navy.
Math encompasses quite a lot of territory, so I think it's important to identify the parts that have most relevance to your specific areas of professional work.
Learning math can be very difficult and frustrating. It's very easy to be overly hard on oneself ("I suck at math", "I'll never learn this", "I must be stupid", etc.). As others have pointed out, it's something you have to grind away at it. I think the takeaway is that for most people it's not something you instantly pick up.
There are multiple ways of explaining the same concepts. If the book you're reading isn't connecting the dots for you, it might be helpful to read about the same topic in another book or two. A different author may provide one or two sentences that make the concept click for you.
If you're taking an in-person class, the instructor might make the class really pleasant and insightful or really nasty and painful (or anywhere in between). I remember entering a Calculus II class in college and the instructor was an ass. He was nasty, bitter, smart-ass, etc. always. I believe he was hating his life and his attitude brought some misery to those around him. I dropped the class. It was toxic for my ability to learn the material. I think it's always best to quickly reject toxic instructors and find one that's not toxic.
Lastly, get a tutor. I've done this when trying to learn (or re-learn) some math when I was in graduate school. It made a huge difference.
You want hard problems just above your level of understanding that when solved teach you dozens of different concepts all at once, that is what 'olympiad' style problems do. You won't be able to linearly go through all the recommended math texts here you will give up from boredom after the first n chapters because you aren't being forced to do it whereas a problem book it will annoy you that you can't solve something, and you'll want to solve it, in my experience. Failing that open up Concrete Math by Knuth and skip to the exercises, use the book text as your research material. At least it has written solutions if you give up trying to solve it. Repeat enough times and it eventually makes sense
My own personal experience has been that learning existing math is not very hard and quite fun (YMMV of course and it also depends on how much pre-requisite knowledge is required to even approach the topic)
Once you've acquired the tools, applying them to solve actual engineering problems, also relatively easy (depending on the problem of course) and very fun.
However, solving math problems is a completely different game, and this is where (again for me), the discipline is the most frustrating.
Solving a math problem is like finding a path out of a dense forest, and some people seem to have a "natural compass" guiding them towards it.
For me (born w/o much of a compass), it's always felt like I have to recursively try all possible paths until I find the one that gets me there. Needless to say, if the forest is dense and thick enough, that's a completely hopeless endeavor.
For example, reading the proof to a theorem, assuming it uses tools, concepts and facts you're familiar enough with and does not take giant leaps (the infamous "from here it obviously follow that ...") is easy and can be fun.
But when I get to the QED, I'm always left wondering how the guy who first proved it effing found the path in the first place.
Do you struggle with mathematical reasoning in itself, or with different aspects of mathematics (aspects that are built on, and work based on, said reasoning)?
I second this recommendation. It's a lovely way to explore some of the beauty of mathematics.
I have a BA in math and I think the most-useful mathematics for everyone is probability (math theory and basic calculations). This is because you'll be better able to deal with (quantify) uncertainty. The concept to aim for is (learn enough so you can understand and use) expected value calculations - which are, I think, the foundation of rational decision making under uncertainty.
Journey through Genius: The Great Theorems of Mathematics - William Dunham
How to Bake Pi - Eugenia Chang
These are all sort of 'pop-math' books -- that is, they're more intended to spark a joy & love for math than teach rigorous mathematics. Great Theorems and A History of Pi include a lot of history (edit to add: in addition to covering the math involved!) -- did you know some mathematicians in history would duel over their theorems? That theorems were a carefully guarded secret instead of something you shared?
Introduction to Graph Theory is specifically intended as an introduction to mathematics for 'the mathematically traumatized'.
In my opinion, after reading these, if you've sparked a joy for the puzzles and fun of mathematics, then I would then suggest branching out into more formal presentations of them relevant to your interests... it's much easier to slog through a book on abstract mathematics when you receive from enjoyment from the puzzles presented.
I also recently released shorter book focussing just on high school math chapter, for people who are not interested in calculus but still want a refresher on the basics. You can check it out here with fancy new cover design and website: https://nobsmath.com/ (it's basically Chapter 1 of the big book) Aussi disponible en Français https://nobsmath.com/fr/
I really like the "placement exam" in this, that tells you where your weaknesses are and what to focus on. I feel like this is the kind of tool I want when someone says "I suck at X".
I am doing now a uni course (economy/informatics) and had to brush up on calculus and other math areas. Khan Academy helped me understand a lot of required concepts.
First, pick a topic that you believe you can be fully engaged with. Here are some examples. But you can look at the threads of these from middle school through first year graduate school.
* Geometry (From Euclid to Topology to tensor analysis)
* Linear Algebra (From vectors to Convex Optimization)
* Calculus (Trig to PDEs')
* Algebra (From Groups to Number Theory)
Second, is do the work. With math is easy to trick yourself, in the moment, that you know the solution and understand the concept. But that mistake acrues, you get to a point where everything is opaque and there isn't a starting point without a hint. This feeling of self-assurance needs to be challenged. You need to do the work, rewrite the proofs, do the exercises completely, and explore the concept on your own a bit.
What kind of math can help a programmer in their career?
There are some fields that can make use of math, like computer graphics, machine learning and data science. Most of it being linear algebra. But although they interest me, I don't work in these fields. For actual, paid, work, I don't remember using math beyond middle school level (ex: solving linear equations), and even that is uncommon.
If you want to learn some math, maybe try playing with shaders (see: https://www.shadertoy.com/ ) or more generally, 3D graphics. There is lots of math in here, but that's awesome looking math, and you can actually see the results.
I would say I felt the same way. I am also self taught and just have high school level math. For the most part of my career though it hasn't really been an issue.
But I want to learn ML so digging in. I feel like it is not as bad as I thought it would be, I think the problem with math information is assumes a lot of things. There are tons of notation that is really dense.
My recommendation would be to pick a project or an area, because math is huge. Try to find resources for that. So for ML it is linear algebra and Calculus. Try to find a bunch of resources and get different ways of explaining it.
You should decide what type of programming you want to focus in first. And then you decide what kind of math you want to learn/improve. I've mainly programmed business applications and I've yet to use much more than basic Algebra. But if I decided to program core physics libraries then I would need a higher level of math competency.
As a student in school I was told that I would need lots of math if I wanted to be a developer but that has not been the case and I feel that all my math training was good for me as a person but it has not added to my career as a business programmer to a great degree.
If you have a math-savvy person in your circles, it might be a good idea to set up a chat with them. I think a good beginning point would be to identify a specific problem or concept that you've encountered that gave you some difficulty, and then talk it through with them.
In my experience as a mathematician, it is not always easy to identify the source of frustration in a problem. Having a different perspective can be really helpful. (Also in my experience as a math educator, a shockingly large proportion of problems stem from fractions, exponentials, and logarithms --- or not knowing what a function is.)
I wouldn't say I'm great at math, I scraped an A-Level in it over twenty years ago, didn't use it much for years, but then I got interested in graphics again and there are some severe gaps in my knowledge.
I remember at the time, I just did not understand matrices, I now use them a hell of a lot and I still suck at them.
Linear algebra is another one.
Most other stuff day to day stuff I can reasonably understand, or at least sit down with pen and paper and work out what I need to do but the above 2 frequently get my head stuck in knots, I often think about maybe doing a course on these 2
Why has there been such a proliferation of these Reddit-style obvious questions upvoted? The front page is full of "Ask HN: what can I do about <insert obvious problem>?"
But to be fair, HN is not aiming to be a wiki. It's a vivid forum that discusses topics that are relevant to its participants. Looking at the amount of comments and upvotes on this thread, it's clear that a lot of people are willing to help or engage in some way. Also, people often not only discuss the initial topic (or question) but something else that arose from it. As I said, it's a vivid place. And that's for good.
If I were you, I'd study only linear algebra. Other subjects, including calculus, are of little use to programners. The quickest way to learn linear algebra is to pick a high level topic, say... spectral decomposition of a matrix, look it up on wikipedia, see what theorems this topic is made of, and try to repeat the proofs. You'll quickly see that those proofs rely on lower level theorems, so you'll need to look them up too, and so on, until you descend to the definitions of numbers and sets.
I agree with this. I think that the way we teach math is a disservice to the kids. When you watch a talented mathematician's lecture you always see how relatable and intrinsically motivating it is.
On the flip side, I think that when people write about math in scientific reports for example, they don't explain the math they use either.
Teaching by key-value pair (which is what far too many people default to) is a horrible way to teach
Concepts may need to be presented propositionally, but there [almost] always needs to be a "why" (even if the "why" isn't yet understood) paired with the "what" - the Pythagorean Theorem isn't just about memorizing 3-4-5 right triangles, it's about figuring out the shortest distance between two points, knowing how much fencing you need around your property, and on and on
I'm in a similar boat. I've bought three "teach yourself maths" books, and I'm just going through them, doing the problems with pen and paper, old school style.
Whether the knowledge it will cross over to coding is a different question, but I'm actually really enjoying it so far. In fairness, I've hardly ever needed any kind of maths skills when coding so far.
I managed to get through a BSCS w/ a minor in mathematics. And 20 years later I still count on my fingers when working out problems. Or counting change. Or working out the final price on a 30% off sale while shopping.
The odd look I got from from calc professors while taking exams was kinda funny.
Have you considered a tutor? You can probably find someone who tutors both CS and math, who should have an idea of what you want.
You might also look at summer school courses at a local community college. I took statistics that way. There were a number of older people in the course.
I recommend making sure you are good with Guesstimation to start (The book of that name by Weinstein and Adams). Be sure to create your own questions and attempt to answer them. Watch some TED talks and try to use mathematical skepticism to criticize them. Doing all this should make you comfortable using mathematics as a tool. Once you are in that frame of mind, you can explore and have fun with the other topics as ably listed in the other comments on this page. Think of math as a faithful toolkit to explore the world. Once you start to try to describe the world in mathematical language, the more proper tools of mathematics will make much more sense.
Also, keep in mind that pretending things are lines is really useful. See the secant method.
Same situation. It actually helped me to read about the history of math. I found a love for some ideas in math and dispelled some myths I had about the “Queen of the Sciences”.
If you like to learn by reading books, a nice self-contained refresher can be found in No Bullshit Math & Physics, and No Bullshit Linear Algebra by Savov.
So far I've only read the first few chapters of the book, and the exercises often feel too difficult to me. But I think he does a great job of easing into mathematical notation, pausing to reflect on what a seasoned mathematician might be thinking when they come across that notation. He also makes a lot of analogies to programming, and has example programs that are easy to follow. It's helpful to have that angle to understand things from.
Check out this courseware developed at the University of Illinois Urbana Champaign. It was designed for students to proceed at their own pace and class sessions consisted of a computer lab with a professor available to answer any questions or as a distance learning course via IRC/email.
(Long since paywalled away once illinois.edu rolled out their own remote learning agenda...)
It requires Mathematica, which is not free software, but the approach to learning mathematics changed the world for me. I hope this message can inspire some others put off by the lecture format and get their hands dirty playing with math.
And it would be cool to port the notebook format to something supported by free software or write a similar courseware for physics.
It's not actually a guide to learning math, it's a primer on what math does, how it's used and where, how it fits into culture, and how you can get by if you don't actually understand it, and why it's worth it to actually learn.
I don't actually have any understanding of math fundamentals at all myself, so there's nothing that would confuse an outsider, and all the stuff that math people fins obvious but I had to go spend a day searching for is there.
All the interesting stuff in math seems to be continuous and recursive and not at it's core, with multiple parts that touch each other at once.
Math people will tell you that it's like programming, and everything decomposes to simple steps, and you just need to memorize some rules.
They will also tell you that they like math because it teaches you "a whole new way of thinking".
It's a "Draw the rest of the owl" problem. Their idea of a "small simple step" is completely incomprehensible to those without the "new way of thinking".
Which you apparently learn by starting at the bottom, but you can't make any direct practical use of it till you really understand it.
Basic algebra doesn't unlock any new abilities you didn't have before, by using a CAS solver.
It lets you learn slightly less basic algebra, and THEN you can do something that isn't already a solved problem.
But since there's the legendary "new way of thinking", an outsider can't actually imagine how it's going to help them, just like I can't imagine what it's like to juggle three balls or drive a car, they're just... impossibilities I know nothing of.
I think people give up on math partly because only the next few steps are visible, the whole road to being able to do a Kalman filter is not. There's absolutely no instant gratification for a beginner not polluted by a sense of "A calculator could do that", so only the talented, or the disciplined usually learn it.
I've always had extreme trouble with things that are spatial, have multiple interacting parts, have abstractions beyond what we can describe in words easily, etc, so I can't help you actually learn the math itself, because... I'm still working on learning the very basic stuff.
But I think I have a fairly accurate record of what math is from a black box perspective, and how it works from a sociological perspective, and why people hate it and quit before they actually learn.
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.