Advanced Mathematics and Programming 37
First of all, Happy New Year!
The other day I received an email from a friend where she asked me if I thought that having excellent math skills were important in a programmers career. I’ve heard this question asked before and while I thought that might have been the case when I was a lot younger (when I had zero plans to go into the IT world)... I’ve not seen this to be true. My response to her was that it really depended on the types of programming work that one might want to go into. There are definitely programming jobs that require extremely advanced mathematical skills, but I’d guess that many, if not most, don’t really have that sort of prerequisite.

So, as I was saying. I think it really depends. It depends on what sort of programming you’re interested in pursuing. In general, when we’re looking to hire someone at Planet Argon, we’re looking for people with good research and problem solving skills. Programming languages are tools to help solve problems and build things. So, while math skills are useful, they aren’t likely going to make or break a developer.
Like any career, it should be something that you’re passionate about.
I’m curious. As programmers… how would you respond to the following question?
“Should an advanced knowledge of mathematics be a prerequisite in pursuing a career in programming?”
I can only answer the question from my own perspective and would like to share some others. Thanks!
Enjoying the content? Be sure to subscribe to my RSS feed.





Well, I think that programmers with a good background in math (and thus probably with some kind of degree in either math or computer science/engineering) can tackle much harder problems than programmers who don’t. This will always make them more valuable ( as long as other personality issues don’t interfere ).
I think right now we’re seeing so many programmers from non-programming backgrounds because the economy is “good” and there is a lot of work to be had. But I’m not so sure if we go into a recession or stagflation that the same can be said.
Actually i think it is somehow important.
I believe a programmer has to deal with math problems all the time. There are many problems that can be solved using math instead of plain algorithms, specially if you’re going to be working with complex data manipulation and visualization, or extracting useful information from a set of dumb data.
Math is not just arithmetic. There are many other fields in Math that imho are definitely important for a programmer to know.
Knowing Math definitely contribute to understand and have a more abstract line of thinking and i think this is very important to a programmer.
I think it depends on what you mean by advanced mathematics. For example, I’ve been programming in the “Enterprise” world for over ten years and the most complicated math that I’ve had to make use of was when our team built a reporting system. Even in that situation, most of the complexity wasn’t figuring out the math algorithms as those ended up taking very little time to calculate. Most of my time as a programmer is spent working on handling user interactions and display data to them in a user-friendly way.
I’m pretty sure that I’ve used more math when trying to buy a house, plan my savings, or purchasing popcorn at the theatre and wondering if the extra fifty cents for the large is really economical.
Knowing a lot of math will help you, but I’d argue that knowing more about language and being able to express your solutions eloquently will get you even farther. You can always outsource the really complicated math problems to those that specialize in that.
Today I read a similar discussion on a Romanian blog about the advantages of olympic vs non-olympic programmers. The example there was the removal of duplicate data: an “normal” programmer would sort the data and remove consecutive duplicate data and an olympic would use hash tables.
My opinion is that olympics have an advantage of really solid algorithmic skill but that doesn’t necessarily mean they make better programs then the rest. It helps knowing what a hash is, or a binary tree but in practice how many times have you applied it in web programming ? That helps in more low-level programming where you need speed, scalability (like a DB or OS) but most of the time you use ready-made efficient things (how many times have you written a quicksort vs using sort() ?).
So knowing math and algorithmics helps you better see and solve problems but for most things you don’t need advanced knowledge.
Note: I modified the question that I raised to ask if it should be considered a prerequisite or not.
Thanks for the responses so far!
Personally, I believe that unless you’re going in to a field that requires mathematical computation (physics modeling, advanced simulations mathematical modeling, visualizations and graphics programming, etc) math is simply a road which may lead to a beneficial end. It may indicate that one was trained with a logical and consistent view of problems, but there are many other fields and disciplines that demonstrate the same principles (chemistry and the myriad of other sciences offhand).
tehceleb points out that math implies a CSCI degree which implies skillful programming. Reward A (math) while expecting B (skillful programming) and you’ll receive more of A (math) and less of B (skillful programming). I think it’s also rather… disheartening that tehceleb seems to believe that no CSCI degree means no programming background. Clearly this demonstrates a lack of passion or understanding that many pursue this field not because of what the university taught them, but because of their own thirst for knowledge (or I’m just way off base).
I also believe that the inverse of tehceleb’s statement regarding economy is true. If the programming market size suddenly decreases dramatically, do you think that non-research positions will be higher for people who can describe lambda calculus or people who can describe a supply chain? I rather believe that there would be (and is) a higher demand for people who can program and understand useful applications and situations for their clients, rather than someone who might be able to cleverly condense five lines of code to two.
I’ve worked in programming land for almost eight years now, and I’ve never once had need to crack open a math textbook to look up how to resolve an issue that I was having. Perhaps in the dim days of assembler and even more recently C, it was useful to be able to implement the most efficient gsub function yourself and use advanced mathematics to do it. However, today (outside of research and academic programming) I just don’t see the need.
So, here’s one other professional programmer chiming in with “you don’t really need it”. It might help you, but if the passion is there you’re going to learn to program great code with or without knowing how to compute the area under a curve.
Aw, modification after I posted! Hah. I will respond with a definite categorical “no” to math being a prerequisite. I think passion is probably the biggest prerequisite of all. Our craft is so narrowly focused and arcane that it requires a high level of dedication and love to properly understand. Further, we also need to continue learning and growing as we advance. The programmers who start and stop learning at a university are the legions who will never get to program anything truly wonderful.
Piku; bam. You got it dead on. Sometimes having that extra knowledge is useful, but not most of the time. I would further stipulate, though, that math isn’t really required to understand the concept of a hashing table.
An IT position at CERN or one in the banking sector where you model risk of credit are those that would demand high literacy in Mathematics. But the wide web application market does well without for example Taylor series. One most popular Maths real-world application are prime numbers in crypting in https or ssh. But this is so nicely packaged these days that noone has to understand thoroughly why it is safe and how it works. You might fancy testing some graph theorems on social networking websites, but if you confront it with budget there are simpler tasks with better value for users (and ROI accordingly).
Maths aptitude and programming ability have a correlation, but one doesn’t follow from the other – if you have that sort of brain, you tend to be good at both.
I agree with @phantomdata in that it depends on what the programming involves. We have found that our clients understand their problem domain, and also know and can convey any algorithms that are required in the application. If advanced mathematic wizardry is required, they usually go to a math genius for one time assistance, or talk with someone else who has done the math. For us, it isn’t a prerequisite.
Depends on what category of “programming” you’re talking about. This usually leads to a shit-storm of defensiveness, however I still believe the question needs to be focused in order to be answered properly.
Given that this is a Ruby & Rails blog, the most relevant comparison is a Ruby core developer & a Rails core developer. As you know, a Ruby core developer is going to be working extensively in C, dealing with many of the low level issues that such a job entails (memory management, building complex data structures etc.). Compare this to a Rails core developer, who sits much higher up in the abstraction chain. The kind of work they’re doing treats Ruby as a tool (arguably they could be using any tool), glueing things together for comparably higher level outcomes.
It’s a given that a developer working on ActionView doing HTML template rendering is going to be writing a lot less involving complex (often pre-established) algorithms than a P/L implementer or someone working on a VM like YARV. In each of these cases, different degrees of Computer Science knowledge are required to the point where the two ends of the scale are “next to none” and “bucketloads”.
I personally find myself somewhere in the middle (actually, I kid myself; a smidge closer to “next to none”) which I think is a healthy place to be. There’s roles for people anywhere along the scale, but being in the middle means you don’t crap your pants when you need to write something involving C extensions and you don’t get a blank look across your face when asked what the difference is between a Proc & lambda. Having an understanding of what a side effect is and What It Means To You™ is also desirable, but after writing that it seems like I’ve steered more towards CS as a desirable than “advanced mathematics”.
So now we’re back at the age old question which has been visited countless times before; do programmers require a Computer Science degree?
The answer? Depends where you want to be on the scale.
Seems I’d probably agree with most of the other comments. I’ve to friends from Uni who are now doing PhDs which do really seem to be hitting the math books hard, but then thats genetic algorithms and machine learning. For your average corporate software developer I wouldn’t consider it a prerequisite, I’d say the ability to locate resources of information about a mathematical algorithm or mathematical solution to a problem would be more important.
So far in my job the most mathematical thing I’ve had to deal with was IP address ranges and masking with CIDR and such.
We used math heavily in EE courses in college, but in the real world I haven’t required much for enterpise development. In fact, I’m slowly forgetting such things and its quite depressing.
However, as a engineer I loved digging deep into the material and getting my hands dirty. In software, you either dig into the code (work) or into how the code really works (personal). By the latter, I mean understanding lambda calculus, type/category theory, compilers, etc. While I’ve never had much interest in game development, someday I may read up on it just to learn what design problems they tackled and how they solved them. There is a lot of mathematics required to understand how things work, which makes you a better developer, but very little for the day-to-day coding of a normal jobs. You have to look behind the scenes.
My Bachelor of Art in Art, and my career as a web developer, say no.
Advanced knowledge of mathematics is not a prerequisite for pursuing a career in programming. However, advanced knowledge is a prerequisite in order to take your career in certain directions.
That said, for me personally, I don’t think that those directions are ones that I wish to pursue…
“Excellent math skills” and “an advanced knowledge of mathematics” are separate matters. The latter will only be a prerequisite for certain subfields (though I suppose it never hurts.) The former matters more often, in line with what Dick Davies said, though even then there are areas of activity within what’s called “programming” where that matters less than other cognitive traits.
I think that having an advanced level of exposure to mathematics is absolutely not a prerequisite for programming. However, a lack of exposure to formalized computer science and mathematics often causes programmers to waste a lot of time.
Those who haven’t had a decent grounding in CS do a lot of exploration of dead-ends in terms of algorithms and architectures, as well as re-inventing the wheel by building their own libraries and tools using inefficient and fragile methods.
I’m increasingly convinced that the greatest skill a programmer can have is the ability to avoid writing code that will prove to be less than useful. Most good programmers I’ve worked with have more or less specialized in finding the simplest possible solution to a problem, but the absolute best seem more adept at finding a simpler problem to solve instead.
Doing that kind of domain hacking requires either an incredibly rare intuition, or a solid background in CS that allows a developer to recognize well-known, already-solved (or even more importantly, unsolvable) problems.
I think you can be a mediocre programmer and earn a fairly secure living without much maths – and the big growth area for this recently has been rails-land – but to be a good programmer you need to have a strong background in thinking mathematically. That can be self-taught but it takes many years to acquire the breadth in the basics without a degree program to target you. On the other hand, it’s OK if CS is the only branch of mathematics you’ve studied in any depth, so long as your grounding is broader.
No, it’s not a prerequisite for most programming, and especially not web development as a whole.
The more I watch people struggle with programming, the more I think that synthesis and intellectual flexibility are far more important skills than the ability to write small, isolated, brilliant bits of code.
That means somebody who can come up with a sensible, coherent vision of what the application will do, not only keep its working parts in her head but imagining/seeing how it all fits together as a whole program/narrative… and ensure that things are sensible and consistent across the board. That means not getting caught up with the tiniest details but rather having the willpower and restraint to execute (and finish). And, finally, someone who can remember the overweening point of the development to begin with.
Math is a technical skill. Sometimes it’s required, sometimes it’s not. Math doesn’t teach you those “symphony” skills I mentioned above, only practice and self-reflection do that. Math can teach you how to solve a subset of the problem, not how to build a program.
And from where I sit, the world seems full of people who can competently solve subsets of a problem but who fail utterly at building an entire solution.
Oh, it’s definitely not a pre-requisite. But imho it definitely is a plus to consider.
Mathematicians are really good problem solvers and they come with a strong abstract line of thinking from factory ;)
I can’t make an argument from theory, but from experience and history: The best programmers I’ve worked with have done advanced work in mathematics.
Good-to-great programmers are extremely adept at “back of the envelope” calculations where they can make a solid estimate about, say, throughput of bytes / second based on some key indicators. Perhaps not math, but certainly a deep sympathy with powers of ten . . .
Its a great question and I would say its not a prerequisite, but it certainly helps.
I think the major benefit is that most math education in the United States is about problem solving in the most efficient/elegant way. This is the heart of most professional programming work and people who are used to and experienced with figuring out problems are going to do better in a career where that is the essential skill. The secondary specific knowledge may or may not be useful for a given problem domain.
There is another set of skills necessary for software development that Amy Hoy refers to above, that are not particularly fostered as a part of Math education (though not excluded either). My own experience is that they are fostered by a balanced liberal arts education (with math as a liberal art) and bolstered by rounded experience.
This has been discussed at length already so I’ll keep it short. I don’t think “advanced maths”, whatever that is, should be a prerequisite. A solid brain and a good aptitude is all I’d suggest as a “prerequisite”. Certainly a science degree with a strong math component doesn’t hurt, but it’s not a prerequisite.
Greetings,
Absolutely not.
Programming is a language skill more than a math skill. The languages are logic-based, certainly, and advanced math will give interesting insights, but they are not required.
Programming is far more like writing a complex novel, imo.
There are subplots to take into account, and many choices for the layout of sentences and ordering of paragraphs and events in the story, all of which are basically correct. The question is which order, and which set of words, builds the story the best.
Every programmer needs to keep in mind the overarching arc of the story, even as they’re working on individual chapters within.
I’ll try not to stretch the analogy any more. :)
I’m biased in this, though, I came to the realization early in life that I perceived programming to be a language skill (as opposed to my teachers who held it to be a math skill), so I’ve argued this for a while and it’s a belief I’ve held to for a long time.
That said, if you’re trying to implement a physics engine in a video game, you’d better have someone with a solid understanding of advanced math. :) Different strokes, and all.
— Morgan
Never seen a good programmer that don’t have a good mathematical thinking, not necessarily have deep math knowledge. But do know how to solve problems or contribute to their solving.
A programmer should be able to do typical early high school math homework and not need any help: functions, graphing, algebra, fractions, integers, decimals, recognizing patterns… It’s amazing how many people don’t have a firm understanding of these things.
To be a good programmer you have to understand counting on a level most people just don’t get. The counting involved is FAR from difficult, but the people who really get it, are capable of performing math that is much harder, which is why math is usually considered a requirement. Basic logic seems to elude this same group of people who don’t really understand counting. If logic and counting don’t automatically click for you, then you should avoid programming.
I tend to think there is a parallel between those good at math and those good at programming. Programmers who can solve complex math problems generally seem to be able to solve complex programming problems, as well. But maybe sound mathematical skills helps more with algorithmic type programming… like a complex search or something that considers several different parameters/rules/conditions.
But in general, I think those interested and good at math have a better chance at becoming skillfully better at programming.
The mindset one gets into when solving math problems can be a tremendous help when programming. I agree with Ryan. There’s a parallel between good mathematicians and good programmers.
Programming nowadays doesn’t require much math. Sorting, time-space complexity and a plethora of data structures exist as modules. There’s no need to learn the low level stuff, where lots of math is involved. The only time I really used math was when coding games. Especially 3D games without the use of frameworks and libraries.
If you know how to type, how to invoke the compiler, how to debug and how to run the profiler, you know everything you need at work.
It is depressing, but you can be an engineer and all that companies want are drones. People who can stay long hours sitting looking at a screen.
Systems are so big no one understands them anymore. They simply grow until they make no sense. If they made sense, they would continue growing…
Worse still, designers just translate huge paper forms into web pages. Then store mindlessly into a database with no respect for database referential integrity and in RAM with no respect for object orientation.
This strategy I call: “No brain, no pain.”
“Systems are so big no one understands them anymore. They simply grow until they make no sense. If they made sense, they would continue growing…”
That’s quiet profound
This is an extremely interesting topic, and one close to my own heart. I was told back in school, that Maths was an important part of programming, and being not so hot on it, I was encouraged to do an A-level in more English based subjects. Consequently I ignored all advice, and Im now employed as a web-developer. I have a passion for programming, and learning, and in the end up – that’s what has got me the job. DO I think skills in Maths are needed? Yes, to a point. Advanced Calculus. Nope. Trig. Yep – especially for Flash type programming..
Advanced knowledge of Mathematics is not a prerequisite but surviving and, even better, excelling in upper level Math courses sure is a good indicator of being able to think clearly.
Advanced knowledge of Mathematics is not a prerequisite but surviving and, even better, excelling in upper level Math courses sure is a good indicator of being able to think clearly.
Advanced maths provides tools and models that can describe certain domains and problems of the real world very well (almost all, except heart sickness and similar stuff). Once a real problem is translated into a mathematicel problem, every other mathematician understands the problem. So you can say maths is a language as well. Well, maths has many tools to solve mathematical problems, like addition and division and many more and of course many with a more complex nature, which you can use on every problem, once translated into a mathematical problem. A skilled and talented mathematican knows how to abstract real problems and how to use maths to solve them. And if there is no mathematical model to describe it, he/she invents one, which is proved and therefore efficient and valid.
So whats the deal about programming? Solving problems of the real world, right? To comprehend a problem, translate it into a programming language which follows exact rules like maths and prove that the build solution is valid, or just praying that it is.
So in my opinion, programming and maths demands almost the same skills and talents. You dont have to know anything about maths to be a great programmer, but i bet you would be a good mathematican as well. And if you are an expierenced and good mathematican you can transfer many things into programming.
I think, like others have said, it depends on what kind of programming is being done.
I think the beauty of programming is that it should be inclusive of a wide variety of personality, thinking, and learning styles. To make a quality application, it needs to follow business flow, be built so it is intuitively ‘right’ for the user, and be fast and rock-solid on the back-end. This takes a holistic, whole-brain approach to design and development.
No one person has all this… and if they are blessed to have as much, then more power to them - and do they want a job? ;)
Ultimately, though, I think Mathematics is mostly about relationships—how ideas relate to each other and the complexities of the nuance. It takes more than just extensive knowledge of higher-order math to grok that.
I think, it depends what kind of programing you do. If you are into research strong math background is a must.
I think, it depends what kind of programing you do. If you are into research strong math background is a must.