I’m working my way to a CS degree and am currently slogging my way through an 8-week Trig course. I barely passed College Algebra and have another Algebra and two Calculus classes ahead of me.
How much of this will I need in a programming job? And, more importantly, if I suck at Math, should I just find another career path?
Depends on the programming job.
In my amateur experience, the most difficult math I had to do was use the Pythagorean theorem to calculate a point that was spinning around an other point.
But I can see needing to be able to use matrices in some instances.
Being good at math allows programmers to code more efficient systems. Instead of doing multiple complicated lines, it could all be incorporated into a single efficient equation.
Most of programming is just logic based. Although math is also logic based. So take from it what you will.
Yep, truth tables mostly. Math is mostly useful in game programming.
And graphics.
Statistics is also important in a lot of areas if your doing data analysis.
Being comfortable with basic back-of-the-envelope math can be a huge benefit. (Full disclosure: i am a math major who is now a programmer)
Over my career I have several examples of projects that have saved weeks worth of dev time because someone could predict the result with some basic calculations. I also have several examples where I have shown people some basic math showing that their idea is never gonna work, they don’t listen and do it anyway, and I see them 1 month later and the project failed in the way i predicted.
A popular (and wise) saying is that “Weeks of work can save you hours of meetings”. I think the same is true for basic math. “Weeks of coding can save you minutes of calculation”.
You can definitely be a successful programmer career without great math skills. Math is a tool that can help you be more effective.
Can you share the full story of the projects that you could predict could fail using maths?
Depend on what programming you do. Graphics will be math out of the wazoo, whereas generic web or desktop app programming has very little math involved
I was doing full stack dev for 20 years until very recently. Never needed anything beyond basic algebra EXCEPT for while I was getting my CS degree…had 2 classes, i think, where we were doing matrix math/Fourier transforms, but iirc they were electives…one was writing a very basic 3d graphics driver and the other was working with very simple computer vision…things like recognizing handwritten letters.
Programming and math are both heavily rule-based and logic-based, which is why people say if you’re good at math you may be good at programming.
Very much depends what kind of programming you’re doing. Graphics uses shittons of maths. Data analysis/data science is maths/stats heavy. Other types less so!
I’m a front-end developer. I sometimes need to solve algebra problems. I’m pretty bad at it because I , but my knowledge that a problem is solvable by math comes in handy maybe once or twice a month. It’s just that on the few occasions that there’s algebra that I can’t figure out how to solve (maybe once a year), I may ask for help from a colleague.
Examples of cases where math comes in handy:
- Pythagoras when I need to figure out the x/y components of a diagonal distance
- Width/height calculations from a variety of parameters
In summary, as long as you know what math is capable of, you probably won’t have major issues. There will pretty much always be someone around to help with the math part if necessary.
As for calculus… I forgot all about the one calculus class I’ve taken and I’ve never suffered for it.
the better you understand math the better you can understand cs in depth
Anywhere from very important to not important at all, depending on your specific job.
There is some good news though, you’ve been lied to about sucking at math. Whether by yourself or other people I do not know, but the education research I have seen has been pretty clear that the main difference between people of normal intelligence who are ‘good at math’ and those ‘bad at math’ is how long they’re willing to work on a problem to ensure the correct answer before moving on.
I know ‘try harder’ sucks as an answer but it’s the best one I know of and at least in this case will actually make a difference.
Well being able to figure out 1 complex math solution per day vs 1 complex solution per 1.5 days for the person who just has to work on the problem for longer is balloons a lot over the long term.
Like how the average calorie burning difference between people is only 400 per day out of ~2000, but over a month that is like 1.5kg difference of mass burned which is 18kg per year.
But I don’t know if I am interpreting the result you said correctly.
Agreed. Math, for the most part, is very rule oriented and problems only have one answer and often one strategy to get to the answer. If you work on many different problems (in the same subject) you should start to get used to the rules.
Overall I would say a strong math foundation is important to CS but CS isn’t just about coding. You can absolutely get a coding job without strong math skills or even without a degree, it’s just a bit harder to get started. If the discipline still exists you might consider a Business Information Systems degree (we used to call it CS lite). Depending on the position a company might equally consider BIS and CS majors.
i would disagree that math problems only have one strategy for getting to the answer. there are many things, particularly in more abstract math, which can be understood in multiple different ways. the first example that comes to mind is the fundamental theorem of algebra. you can prove it using complex analysis, algebraic topology, or abstract algebra. all the proofs are quite different and rely on deep results from different fields of math.
i think the same thing holds in the less abstract areas of math, it’s just that people are often only taught one strategy for solving a problem and so they believe that’s all there is.
problems only have one answer and often one strategy to get to the answer
Totally disagree
You’re thinking of equations, which only have one answer. There are often many possible ways to solve and tackle problems.
If you’ll permit an analogy, even though there’s “only one way” to use a hammer and nail, the overall problem of joining wood can be solved in a variety of ways.
You’re absolutely right. I was referring to equations which, in my experience, is 90% of undergrad math.
Do you have a link to the research? I’m a math educator and I’d like some good materials for encouraging my students.
As many have already said, the math needed will depend on what type of work you’re looking to do. Writing business software, for example, rarely requires more than basic arithmetic.
However, I think that the logical thinking skills that are needed for math are also necessary to be a good software engineer.
It really depends on the role you are looking for. If working with data and doing analysis, you need some knowledge in stats and probability. If you are working on simulations, you will need basic calculus and algebra. If you are looking at game development, you will need basic trigonometry and vector arithmetic. The one thing you don’t need is mental arithmetic because you have a computer.
That being said, you can get by without these skills, it just becomes harder to see what you need to do, even if you would know how to implement it. This is alleviated if you are working in a team however.
Don’t need a degree, but computer programming is fundamentally logic and algorithms. You need to have internalise reasoning logically. In some ways critical thinking is closer to programming than trig is.
As others have mentioned, how much and what kind of math you need depends heavily on what you do. And while I wholeheartedly encourage you to do what you enjoy, be it with or without maths, I would like to offer another perspective: A loveletter to maths.
Math in general gets a lot easier and more fun the longer you do it and the more interest you can build. Often the people that teach math are extremely good at it, and maybe because of that they suck at explaining it. There is a lot to doing it right.
First of all, I think you need to build excitement. Math strives to describe the world! Math is the foundation of science, math is history, and many of the concepts and techniques arose out of necessity… Or sometimes spite! There are many funny stories or interesting people behind the formulars and concepts you encounter. Learning why the hell some math was even invented and how the guy or gal got the idea is 1000x more interesting than just getting an example for the application of it. It helps you remember stuff.
Then there are a dozen ways to explain every single concept and then some. You will find some much more intuitive than others and the sum of them will sharpen your understanding of them. Looking for different explanations for the same thing can be a great help. Did you know many things in maths where discovered multiple times? That happens a lot, because even brilliant mathematicians don’t properly understand each other, or even themselves.
Another thing you should do is to always develop your vocabulary for every domain/concept you encounter. People will throw around made-up words and symbols like no tomorrow. Often, there are simple concepts behind them, hence they are casually abstracted away. You need to understand the concept and then translate it into your own words and then draw a connection back to the made up stuff. Maths is a lot like programming. 1 + 1 is just a function, returning a result. So are integrals, formulas in vector algebra, and every single damn other thing in maths. Just follow the chain!
And finally, there are also some amazing insights hidden in maths. Gödel’s incompleteness theorems might send a chill down your spine once you grasp their implications. Computability and information theory will shape your view on the world and yourself.
I went from getting Ds to Bs to advanced theoretical CS courses and you can do it too. You don’t have to, but you can.
While I do agree that math gets much easier with interest, and that it gets more interesting the further you get into it, and that math is inherently beautiful, etc. I feel this argument has to fall flat to people who don’t already agree. It’s the education equivalent of when someone says they couldn’t get into an anime and then the fans tell them ‘oh it gets really good around season 9’. You could be completely correct, as you are here, but it’s utterly unconvincing if you don’t already “know.”
To be fair, I think this is mostly a problem with math curricula. Math classes up through high school and early college seem to focus on well trodden solutions to boring problems, and at some (far too late) point it flips around to being creative solutions to interesting problems. I think this could be fixed eventually, but such is the system we have now.
I totally agree. I think maths should start with games in elementary and cover history and applications as soon as you enter middle school. (Keeping games of course, how is there no redstone in the maths curriculum?!)
And I know that my rambling won’t convince people to immediately shake off the system induced maths fatigue, but I’ll never stop encouraging people to give it a second chance :)
As someone who studied math in college, but can hardly string a line of code together without making 4 trips to stack exchange or some documentation, this was a very good explanation of why math is actually really exciting.
More than math courses - logic courses in general helped me rethink and structure things in a variety of ways in how to approach problems. If nothing else it improves your “if-then-else”-fu to understand when you are not(not(not something))). My math degree required logic courses though at the same time so it made sense. For higher level math logic plays a heavy role and so leveraging that aspect helps in a lot of ways.
Totally depends what you end up working on as a programmer. If it’s web apps, you’ll be totally fine. All you need is basic arithmetic. Writing a game engine? You’ll need to know some basic to moderate matrix maths…
If you’re doing formal verification using unbounded model checking… good fucking luck.
On average I would say most programming tasks need very little maths. If you can add and multiply you’ll be fine. Definitely sounds like you’ll be ok.