Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Math Programming

Math Skills For Programmers — Necessary Or Not? 609

An anonymous reader writes "Currently, the nature of most programming work is such that you don't really need math skills to get by or even to do well; after all, linear algebra is no help when building database-driven websites. However, Skorks contends that if you want to do truly interesting work in the software development field, math skills are essential, and furthermore will become increasingly important as we are forced to work with ever larger data sets (making math-intensive algorithm analysis skills a priority)."
This discussion has been archived. No new comments can be posted.

Math Skills For Programmers — Necessary Or Not?

Comments Filter:
  • by TheKingAdrock ( 834418 ) on Thursday March 25, 2010 @04:12AM (#31607948)
    ...but it's not the kind of math you might be thinking about, like calculus, etc. Rather statistics, discrete math, combinatorics, etc. are becoming essential skills if you want to be better than average.
  • by moteyalpha ( 1228680 ) on Thursday March 25, 2010 @04:19AM (#31607996) Homepage Journal
    Absolutely. I do blender and if I didn't understand vector rotation and normals it would be virtually impossible to any good work. You can get the computer to do the heavy lifting, but you have to know what you are asking for. The advantage that exists now is that if anybody is weak on math skills, MIT and others have plenty of open course ware to cover the bases all the way to multi variable calculus.
  • If you're asking... (Score:3, Informative)

    by vikstar ( 615372 ) on Thursday March 25, 2010 @04:30AM (#31608058) Journal

    If you have to even ask that question, then you won't get a programming job that requires math skills. You'll be the bottom of the barrel in your programming group, and then a few of years later promoted as their manager because you can't do any of the technical stuff but are great friends with the boss, or you'll end up doing system support swapping out tape backups and fixing printer jams.

  • by smallfries ( 601545 ) on Thursday March 25, 2010 @05:42AM (#31608340) Homepage

    I'd go further than that - most chunks of maths are things that are absolutely essential for some area of programming. You may not need to know everything all of the time, but for any particular task you will need to know some of this (non-exhaustive) list :

    Statistics - useful just about everywhere, but in particular if you have to do any kind of data analysis in your work. Knowing particular distributions and how to compute the properties of them is essential.

    Probability - if you use any kind of randomness in your work this is essential and in quite a few places where you don't deliberately use randomness but you are using non-determinism to model lack of knowledge i.e packing and filling of sparse data-structures.

    Algebra - the daddy. Knowing a simple formal language that lets you rearrange expressions is an essential first step towards understanding a programming language. The more you learn the more it will help. If you head down to the Category Theory end of the pool then Monads and Arrows come in useful if you swim away from imperative languages and find something more interesting.

    Logic - the other foundation. Learning to apply logic is relevant in any area of programming as it is an elementary part of programming. A deeper understanding of propositional and predicate logics is essential to do any work in compilers and will aid your understanding of control and data-flow in any language that you work in.

    Linear Algebra - anything that touches the "real world" requires a bit of LA, as the parent mentioned physics, 3D graphics and I would add Vision to that list.

    Set Theory - these are your basic building blocks, use them well. Whether it is building the right data-structure or using a database this is the foundation that you need to understand.

    Graph Theory - some people never need anything more complex than a relational database, but some people only care about the relations. If you want to model any large network (the internet, or social interactions, economics), or perhaps programs within a compiler, or just the relationships between discrete objects then you will either learn some Graph Theory first, or rediscover it yourself the hard way.

    Combinatorics - counting is fun! Counting (and enumerating in the programmer's sense) complex objects is basic problem that crops up in almost every area. For people without some grounding in combinatorics it is the kind of question that will get kicked up to the "office guru".

    Now, if only maths graduates could program their way out of a wet cardboard box, then we could truly start designing giant flame breathing killer robots.

  • by Opportunist ( 166417 ) on Thursday March 25, 2010 @06:24AM (#31608476)

    I dare to disagree. Programming is basically putting algorithms into a form a computer can understand. Nothing more. And where do these algos come from?

    It baffles me to no end every time I see "programmers" apply who consider math as some sort of secondary skill. It's not. It is the primary skill for a good programmer. I do not need someone who can "translate" my algorithm into code. I need someone who can take my problem and develop an algo for it. Coding it is the most trivial part of the solution.

  • by Gnumbers ( 1775462 ) on Thursday March 25, 2010 @07:15AM (#31608668) Homepage

    Just yesterday I wrote a short article ( http://goo.gl/dko2 [goo.gl] ) after reading about how Facebook are using Mathematics to help with Failure rates in their datastore clusters.

    There is a 24 page presentation by Avinash Lakshman and Prashant Malik, which describes (page 17 onwards), how the company are using Probability Theory to help them detect failure in a datastore.

    Probability Theory is just one area of Mathematics, and degree level Mathematics would usually include at least one or two modules in Probability.

    If I were an Operations Director or Development Team Leader at a large Social Networking company, I would certainly view University Level Mathematics as +1 for anyone applying to join the team.

    The short article is here [blogspot.com] and the clickable link in that article should take you directly to somewhere (slideshare, etc) where you can view the 24 page .pdf

  • by pnewhook ( 788591 ) on Thursday March 25, 2010 @10:07AM (#31610076)

    Physics *IS* math. However Math also includes algorithms and concepts that have no physical basis, or at least none discovered yet.

  • by mr_mischief ( 456295 ) on Saturday March 27, 2010 @08:29AM (#31638638) Journal

    Not many people do work with data sets that size. However, some people only consider their work "interesting" when they are on the cutting edge of their field. It's one of those words for something subjective that people regularly take for objective. It also happens to be central to the orignal question. If the poster of the question has a different set of interests than the author of the cited article, then he could easily find that there is work interesting to him which doesn't require math more advanced than basic high-school algebra (and often quite a bit less).

    If digging through old log files looking for certain flag strings is "interesting" to someone, then they don't need much math for that. If they want to keep simple statistics on those strings, that's a little more. If they want to chart the deviations of the proximity of two different strings across multiple files, they're going to need more. If they want to figure the trajectory of a rocket-propelled space vehicle as it enters and leaves the gravity well of a gas giant, then seventh-grade math just isn't going to get them started. Lots of people would agree that working at Los Alamos or the JPL on really tough problems is the more interesting type of programming. Some people would be shocked to find out that others actually enjoy writing CRUD applications, device drivers, and log analyzers.

    Hell, some people enjoy writing accounting applications, or even enjoy being accountants and using it! Accounting does involve quite a bit of math, BTW, and not always just arithmetic. A mathematician or a physicist would be hard-pressed to do proper financial planning and corporate auditing like a CPA can for clients, though. There's a lot of domain knowledge about best practices, laws, regulations, and government incentives that an accountant needs to know.

    Some math is necessary for all programmers. Higher math is necessary when it's domain knowledge. Lots of work with computers is in graphics, simulations, modelling, encryption, and other fields that absolutely need math for their very basis. Other work requires advanced math for the sheer scale of the problems, because at some point throwing more expensive hardware at a problem just won't scale it vertically.

    To get a good, fast horizontal scaling someone needs to understand how to make the code work in parallel by some means. The front-end programmer of a vastly parallel system might not need to know quite how the back-end works. The guy who develops the back-end sure needs to, though, and probably so does the guy who supports the front-end developer in using the back-end services. Many, and I think most, CS-types would consider the back-end the interesting part of a parallel system. That's the part that needs the advanced math -- the interesting part, just as the article states.

Organic chemistry is the chemistry of carbon compounds. Biochemistry is the study of carbon compounds that crawl. -- Mike Adams

Working...