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?
Try ‘Mathematics can be fun’ by Perelman.
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.Reply
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.Reply
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.Reply
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.Reply
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 bought "math for programmers" https://www.manning.com/books/math-for-programmers But I realised I really need to get better at algebra first.
I'm treating this as how I treated learning the guitar on my own when I was 12, sit in my room at night and practice.
I'd be interested to hear what people think of my khan academy plan :)Reply
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.Reply
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.
Here's an example of a good quantitative reasoning textbook that I looked at once, it is pretty well received by non-math people: https://www.amazon.com/Using-Understanding-Mathematics-Quant...Reply
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)?Reply
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”.Reply
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.)Reply
I suggest to read Fermat's Enigma: The Epic Quest to Solve the World's Greatest Mathematical Problem (Simon Singh) https://www.amazon.com/Fermats-Enigma-Greatest-Mathematical-... to fall in love with math ;)Reply
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.Reply
> where can I start learning math concepts that will help me in my career?
I wouldn’t worry about it. The amount of math that a working programmer needs is minuscule.Reply
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.Reply
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.Reply
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.Reply
Introduction to Graph Theory - Richard J. Trudeau
A History of Pi - Petr Beckmann
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.Reply
There's nothing better for filling math gaps than going through Kahnacademy.
Start skimming at the 1st grade level and then slow down and focus when you reach material that isn't easy.Reply
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?Reply
I'm working on an open source guide to exactly this, but it needs more peer review: https://github.com/EternityForest/AnyoneCanDoIt/blob/master/...
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.Reply
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.Reply
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.Reply
It also helps not to tell yourself "I suck at math", that's a very common self-fulfilling prophecy.Reply
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.Reply
At what moments do you feel that your math knowledge limits your programming skills?
Also: what kind of programming are you doing? E.g. working with 3d games relies on different math skills than dealing with AB testing.Reply
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..Reply
Get Skopenkov's 'Algebra via Problems' book to train olympiads: https://bookstore.ams.org/mcl-25 and his Geometry book https://bookstore.ams.org/cdn-1629826994644/mcl-26/ there's a combinatorics version coming out soon.
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 senseReply
Learn the concepts and start practicingReply
The brilliant app is not bad at this. It takes you through a good learning curve.Reply
First Khan Academy, then if you want to go further:
Bill Shillito | Introduction to Higher Mathematics (YouTube lecture course) - https://www.youtube.com/playlist?list=PLZzHxk_TPOStgPtqRZ6Kz...
Richard Hammack | Book of Proof (pdf book) - https://www.people.vcu.edu/~rhammack/BookOfProof/
Taylor Dupuy | Fundamentals of Mathematics (YouTube lecture course) - https://www.youtube.com/playlist?list=PLJmfLfPx1OedcIUn5nSCZ...
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.)
Dana Mosely | Understanding Basic Statistics (YouTube lecture course, no calculus) - https://www.youtube.com/playlist?list=PL9Wxhr5qVFN0WY2CXB4tR...
Gilbert Strang | Highlights of Calculus (YouTube lecture course) - https://www.youtube.com/playlist?list=PLBE9407EA64E2C318
Josh Starmer | StatQuest (Short various statistics videos) - https://www.youtube.com/c/joshstarmer/playlists
Bob Franzosa | Introduction to Topology (single public lecture) - https://www.youtube.com/watch?v=zsN_guq__Ac
Socratica | Abstract Algebra (short videos) - https://www.youtube.com/playlist?list=PLi01XoE8jYoi3SgnnGorR...
MIT Calculus Revisited (Single Variable Calculus): https://www.youtube.com/playlist?list=PL3B08AE665AB9002A
MIT Calculus Revisited (Multivariable Calculus): https://www.youtube.com/playlist?list=PL1C22D4DED943EF7B
MIT Calculus Revisited (Complex Variables, Differential Equations, Linear Algebra): https://www.youtube.com/playlist?list=PLD971E94905A70448
Matthew Macauley | Visual Group Theory, Differential Equations, Discrete Mathematical Structures, Advanced Linear Algebra, and Advanced Engineering Mathematics (YouTube lecture courses) - https://www.youtube.com/channel/UCH1cV4RtgI_N97M8jepiUzw/pla...
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.
Open University (BBC) | Geometric Topology (YouTube lecture course) - https://www.youtube.com/playlist?list=PLKB3Q5Oyy_RNBrS3V2WbO...
Joel David Hamkins | Philosophy of Mathematics (YouTube lecture course) - https://www.youtube.com/playlist?list=PLg5tKDNI_a86OO6J9HuIn...
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.
Other than the usual big American universities another good source from India is NPTEL (https://nptel.ac.in/course.html).
For somewhat more entertaining short lectures try:
Grant Sanderson | 3Blue1Brown - https://www.youtube.com/c/3blue1brown
Brady Haran | Numberphile - https://www.youtube.com/c/numberphile/
Tai-Danae Bradley, Gabe Perez-Giz, and Kelsey Houston-Edwards | PBS Infinite Series - https://www.youtube.com/c/pbsinfiniteseries/
Raymond Flood (YouTube public lectures at Gresham College) | History of Mathematics - https://www.youtube.com/playlist?list=PL_jwwOG0kPgPPiX0pcbzL...
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:
Math Vault | The Definitive Glossary of Higher Mathematical Jargon - https://mathvault.ca/math-glossary/Reply
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 2Reply
For those with PHDs or of some high math credentials:
What would be the next subject to learn in math and why?
After having taken these, what's next? Probability Theory, Calc Series, Linear Algebra / Differential Eqs / Discrete Math.
Could you annotate something about the subject with an example?Reply
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.Reply
I was asking a similar question a few years ago and found Ivan Savov’s “No Bullshit Guide to Math & Physics” to be really helpful.Reply
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.Reply
There are a number of facets to this problem.
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.
It's borderline disheartening.Reply
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.
Generally other textbooks will assume you're a child or slow, these are no non-sense and to the point while being very well written. Good luck!Reply
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". 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.Reply
Have you tried the internet?
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>?"Reply
Two pieces of advice.
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.Reply
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.Reply
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").Reply
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.Reply
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.
I highly recommend:
Math for Programmers by Paul OrlandReply
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.Reply
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).Reply
I would go with Art of Problem Solving series. Especially volume 1.Reply
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.Reply
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.Reply
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.Reply
I would suggest math books from "for Dummies" series if it is hard for you to understand other math books.Reply
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.Reply
Any edition of "Mathematical Ideas" 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.Reply
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 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.Reply