Slashdot Mirror


Ask Slashdot: How Many of You Actually Use Math?

An anonymous reader writes with a question that makes a good follow-on to the claim that mathematics requirements in U.S. schools unnecessarily limit students' educational choices: "I'm a high school student who is interested in a career in a computer science or game development related position. I've been told by teachers and parents that math classes are a must for any technology related career. I've been dabbling around Unity3D and OGRE for about two years now and have been programming for longer than that, but I've never had to use any math beyond trigonometry (which I took as a Freshman). This makes me wonder: will I actually use calculus and above, or is it just a popular idea that you need to be a mathematician in order to program? What are your experiences?"

140 of 1,086 comments (clear)

  1. Field dependent requirement by icebike · · Score: 5, Insightful

    The bulk of programming jobs have nothing at all to do with math beyond the high school level.
    Its mostly counting beans and keeping records. Really, it is.

    Gaming, (image rendering and manipulation), statistics, and rocket science are a few of the obvious areas that come to mind where more advanced maths may be necessary. Even these fields have packages available to do the heavy lifting once you figure out what it is that you want to do. Knowing what to do the key. This kind of programming constitutes about 1% of the available jobs and 98% of the chest thumping on slashdot.

    --
    Sig Battery depleted. Reverting to safe mode.
    1. Re:Field dependent requirement by AlphaWolf_HK · · Score: 4, Interesting

      I've gone all the way up to calculus 3 (vectors, multi-dimensional functions, and doing differentials and integrals therein) and I've yet to see calculus applied by any programming. I am curious how one actually implements it though, in what (limited) programming I've done, I haven't seen any clear way to calculate say an integral using something like c++ or c#.

      Is it typically library/api driven and you just feed an equation to those functions? Or do most programmers hardcode them?

      I'd like to see some code examples. I'd probably never have a use for it, but I am curious.

      --
      Careful with names containing L slashdot.org/~AiphaWolf_HK slashdot.org/~AlphaWoif_HK slashdot.org/~AiphaWoif_HK
    2. Re:Field dependent requirement by fredprado · · Score: 5, Insightful

      On the other hand, almost all IT jobs require at the very least a good part of high school math, especially logic, algebra, arithmetics and combinatory analysis.

    3. Re:Field dependent requirement by jittles · · Score: 5, Interesting

      Two out of three Of my jobs after graduating have required math. The first job involved video encoding, decoding, and cryptographic signatures. If I didn't have knowledge of advanced math I would have found it almost impossible to understand the algorithms, and to make optimizations that were required.

      The second job required linear algebra to do calculations of target positions from a moving aircraft to track up to six moving ground targets. I'd say the math experience is also nice to have just from a problem solving Standpoint.

    4. Re:Field dependent requirement by DanTheStone · · Score: 4, Informative

      I've done work in GIS software that definitely used my Calculus and Linear Geometry training (for surface areas and distances and intersections on a sphere, for example). The times you need the math are when there isn't already a "package" available for you, or when you need to do something efficiently (optimizing calculations). In my current job Statistics is shaping up to be more useful.

      Then again, I did also have a math minor and gravitate toward technical jobs, so some of that stuff is expected. But I'm not in gaming or rocket science or statistics.

    5. Re:Field dependent requirement by Jeremiah+Cornelius · · Score: 3, Funny

      How will you ever correctly use the word "orthagonal" in a meeting, and command all credibility, without having taken maths?

      --
      "Flyin' in just a sweet place,
      Never been known to fail..."
    6. Re:Field dependent requirement by s.petry · · Score: 4, Insightful

      Taking away the obvious implication of "You don't program differential equations" the logic skills gained by math help greatly in programming. I don't use derivatives per-say in programming or IT work, however understanding how to simplify complex problems has been invaluable to my career.

      I graduated with a Mathematics degree and minored in Liberal Arts. I learned about computers during courses in programming that were required for the Math degree. I have never worked as a Mathematician, it was boring compared to Information Technology.

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    7. Re:Field dependent requirement by bannable · · Score: 5, Insightful

      I haven't seen any clear way to calculate say an integral using something like c++ or c#.

      Calculus is a study of continuous mathematics. C, C++, and every (?) other programming language work on principles of discrete mathematics, which is why you can read all about strange calculations with floating point variables. So, what you've seen is only natural.

      My understanding of it is that most colleges/universities do not even consider offering discrete mathematic courses until at least Calculus 2 is completed, and in some places not for a year after even that.

      --
      "If you see a man on a horse, he is likely an enemy. Kill the man and eat the horse."
    8. Re:Field dependent requirement by FranTaylor · · Score: 5, Insightful

      I've yet to see calculus applied by any programming.

      How does your laptop computer calculate remaining battery life?

      How does your browser calculate remaining download time?

      How does your tablet distinguish between gestures?

      "I'm an experienced automobile driver and I don't think that pistons and piston rings exist, because I have never seen them."

    9. Re:Field dependent requirement by Anonymous Coward · · Score: 4, Funny

      Math changes the way you think. It helps abastractization and logical thinking. You can say you don't use it, but you can't say it's useless to learn it.

      Honestly though, I think most people who complain about not needing math are a suffering from some kind of inferiority complex. They can't deal with it, so they want to get rid of it.

    10. Re:Field dependent requirement by mcelrath · · Score: 5, Insightful

      You've just reduced computer science to monkeys plugging the right wire into the right socket. 1,000,000 such monkeys can reproduce the collected works of Kernighan and Richie.

      Without math you'll be unable to:

      1. Understand big-O algorithm analysis
      2. Analyze the output of a profiler
      3. Understand any encryption algorithm
      4. Work on any data analysis (every application has some element of statistics -- even if it's in the app's own internal call graph)

      If you cannot do those things, I wouldn't call you a programmer, I'd call you a monkey.

      This ongoing discussion about lack of math is ludicrous. Math is one of those things where if you don't know it, you can't see what it's for, and if you know it, you can't imagine a world without it. You can always argue you don't need knowledge, and if you're nothing but a device for turning food into poop then that's true, but those with knowledge will rule you. EVERY single thing in the world comes down to math. The monkeys don't know that, and they shouldn't program computers. Every single job you can think of can be improved by judicious application of a little math in the right places, and those who can will get ahead.

      To be specific, take combinatorics, and as much statistics as you can get your hands on. That in my opinion is the bare minimum for life as a human being. Then you can understand poker odds, political polls and elections, and you'll know enough to not blow your money on lottery tickets. For programming or any scientific/engineering field, you'll also need linear algebra and calculus. If you're smart enough to realize that you don't live in 1-dimensional world, continue with vector calculus and complex analysis, and laugh as everyone around you tries to do linear regression on everything they can find. One or two more courses out of interest and you'll have a math major.

      --
      1^2=1; (-1)^2=1; 1^2=(-1)^2; 1=-1; 1=0.
    11. Re:Field dependent requirement by Tough+Love · · Score: 5, Insightful

      Just as one example, as a game programmer your ability to implement, say, Newtonian iteration would likely make a difference in your salary ask by a factor of two. Without math skills you are a worker bee, but with strong math... maybe a rock star.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    12. Re:Field dependent requirement by cpu6502 · · Score: 4, Insightful

      The point of high-level math and physics classes is not because you "need" them in your job as a programmer. It's a way to limit how many CSE degrees are granted. I was told this straight-up by my college advisor when I asked What's the point of having 30 freshman engineering students if only 2 survived to the end?

      Lots of college degrees are like this. The supply is higher then the demand for open jobs, so they give tough courses to limit the number of grads. (And degrees that don't weed-out students, like English, end up with a lot of degreed students working at Mickey D's.)

      --
      My AC stalker: " I personally agree with your posts most of the time, but that won't keep me from modding you troll"
    13. Re:Field dependent requirement by FranTaylor · · Score: 5, Funny

      I haven't seen any clear way to calculate say an integral using something like c++ or c#.

      You are aware that there isn't a clear way to calculate integrals using pencil and paper either?

    14. Re:Field dependent requirement by Nemesisghost · · Score: 2

      The bulk of programming jobs have nothing at all to do with math beyond the high school level. Its mostly counting beans and keeping records. Really, it is.

      It's not so much that most programming doesn't use math, it's that different business realms use different type of math. Your standard business application probably isn't going to use much more than basic algebra. But it all depends on the needs of the business you are trying to support. Some will need to calculate & keep track of large statistics. Or you could be working for someone who's business is defined by space usage, so you'll need geometry & calculus. In the graphics & high performance realms you'll need matrix mathematics. At the very least every programmer will need to know boolean algebra.

      My mathematical background is more geared to physics, which really doesn't help much in my current job. What I need here is more statistics. And that's what I'd recommend most programmers get, b/c what business doesn't need statistics.

    15. Re:Field dependent requirement by afidel · · Score: 5, Funny

      The answer to your first two questions is universally poorly.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    16. Re:Field dependent requirement by godrik · · Score: 4, Interesting

      These exemples are simple interpolation/extrapolation.

      Other exemples involves: how does a computer compute sine, cosine, sqrt ?

      How does any programming language work ? (Hint: it is not called lambda CALCULUS because it sounds fancy)

      How to solve systems of equations? (also known as "where does curves intersect?")

    17. Re:Field dependent requirement by sydneyfong · · Score: 2

      If you're really calculating remaining battery life and download time using *calculus*, I think you're doing something wrong.

      Your data is discrete, and there's no funny function for you to differentiate to find the slope. Guesstimating the average speed (of battery use or of download) merely requires something like this http://en.wikipedia.org/wiki/Moving_average#Application_to_measuring_computer_performance

      If you mean the "concepts" of calculus is used here, uh, I've been drawing slopes on Cartesian planes since I finished primary school.....

      --
      Don't quote me on this.
    18. Re:Field dependent requirement by Nemesisghost · · Score: 5, Informative

      Another reason you don't see any calculus(or other advanced mathematics) in programming is that you derive the equations you'll need on a piece of paper or white board then use the results in the actual application. An example is the velocity & distance equations that are derived from constant acceleration(V = V0 + a*t, d = d0 + V0 * t + 1/2 * a * t^2). Those equations are the 1st & 2nd integrals of the acceleration. Now instead of trying to recalculate the entire integral each time you need to know how far something traveled, you simply use the already derived equation. The same goes for most applications of various mathematics. But knowing how to derive those equations doesn't stop you when you are presented with something outside the given(say for example if a = 2 * a0 * t).

    19. Re:Field dependent requirement by Anonymous Coward · · Score: 2, Funny

      How does your laptop computer calculate remaining battery life?

      How does your browser calculate remaining download time?

      How does your tablet distinguish between gestures?

      Poorly?

    20. Re:Field dependent requirement by pitchpipe · · Score: 3, Funny
      From what I've experienced:

      How does your laptop computer calculate remaining battery life?

      Wildly inaccurate guess.

      How does your browser calculate remaining download time?

      Roll of the dice.

      How does your tablet distinguish between gestures?

      Doesn't recognize the bird.

      --
      Look where all this talking got us, baby.
    21. Re:Field dependent requirement by Defenestrar · · Score: 2

      Actually, higher level math is very useful in coming up with a far more efficient algorithm for all sorts of modeling, data analysis, and realistic graphics. Numerical methods can brute force all sorts of calculations, but there's nothing better for efficiency than supplying an analytical solution to a non selfadjoint EVP.

    22. Re:Field dependent requirement by JDG1980 · · Score: 2

      Just as one example, as a game programmer your ability to implement, say, Newtonian iteration would likely make a difference in your salary ask by a factor of two.

      If you care about salary (or working conditions), you shouldn't become a game programmer in the first place. From an objective standpoint these are among the worst programming jobs in existence; the only reason there are so many applicants is because kids fresh out of college thing these jobs are "cool." (They're not; the kids won't actually get to design the games – that's done by completely different teams of people. They're just coding to spec, like they would in any other job, but with worse pay and longer hours.)

    23. Re:Field dependent requirement by Genda · · Score: 5, Informative

      Alright, how about global weather models? Fluid dynamics? Protein folding? Field tensor analysis for everything from power inductors to energy recovering braking systems to fusion modeling? All of these and a thousand more require higher mathematics to model. Ray tracing, rendering and animation being used in virtually all movies and games today involve all kinds of fascinating math problems, and interesting optimizations are popping up all the time. Statistics are important for everything from traffic regulation to neural networks to population control to quantum mechanical modeling to predictive analysis on genomics and proteomics. As has been said, it completely depends on what you're trying to do and what field of computer research you're taking on.

      What hasn't been said is that the critical thinking skills required in visualizing mathematical problems and their solutions is precise that same little chunk of gray matter that's going to help squeeze out a better algorithm, or find the lines of symmetry in your data set so you can fold it and reduce space and time required to make your solution run faster and more reliably. Its all part of the puzzling mind, and math is the heavy lifting needed to give you the mental muscles required to move the intellectual mass you're interested in moving. That and at some point you begin to actually see the world mathematically. The elegance and beauty of the language and its freedom to build new and surprising contexts describing anything you can imagine. If computers are engines of realizing human imagination, math is the fuel that engine runs on.

    24. Re:Field dependent requirement by nahdude812 · · Score: 5, Insightful

      Battery charge / discharge rate is not constant over the charge level of the battery. The percentage reported by the battery to the OS is just the voltage reading, which is not truly linear to the actual charge level. It even depends on the load being placed on the battery. See this image (from here).

      So sure, you can do a bad job of reporting remaining battery time that way. Or you can do a good job by involving some more advanced mathematics. This is a good example of why math is useful, even if most jobs don't fundamentally require it. Most programmers I know would look at the above chart and declare they have no idea how to deal with that, but it is pretty close to linear, and they know how to write that math, so that's what they'd write, then call it good enough.

      You can be a programmer without higher math. But you can be a better programmer with it.

    25. Re:Field dependent requirement by WaywardGeek · · Score: 5, Interesting

      I look for places to use my math skills, and find plenty. I was differentiating to find minimums this morning, and I've used a lot of calculus, linear algebra, and even number theory recently. However, I could find plenty of work which requires nothing more than knowledge of how to use a 4-function calculator. I just don't personally find such work very satisfying.

      I've been instrumental in hiring decisions of couple of dozen programmers by now. If a person says math isn't their thing, it's not the end of the interview, though strong math skills are a plus. I'll often be interested in a physics Ph. D. or mathematician, even if they don't yet know how to code, but if a guy can't show strong analytic skills in math, I need to see some demonstration of coding skills. For example, a person with strong 3-D visualization skills can become a good router guy without advanced math skills, though they have to be competent in high school level math. We just put such people on projects that wont require advanced math.

      In our work (chip design related algorithms), we have to have some serious math geeks, but it doesn't have to be the whole team. We've got a brilliant IIT grad who did our sparse matrix backwards Trapezoid interconnect delay simulator, running 1000X faster than SPICE, with the same accuracy. There's some cool discrete math in our logic optimizer. The linear algebra in the placer is cool. We're also doing some analog design aids, and it really helps if you understand the math behind the algorithms you're expected to code, and analog optimization is heavily mathematical. Advanced logic optimization some advanced math, as does many algorithms that come up in chip design. I've been doing a bit of analog, which is heavy into Z transforms, and Laplace transforms. I've also recently done a bit of signal processing involving custom optimized FFT code. Transformer design can be done by "rule of thumb", but to write the code to do it well requires solid understanding of both the physics and the math behind it. Those who enjoy advanced math appreciate being assigned projects where they can put their mathematical reasoning skills to good use, and those who hate math appreciate not being on those projects. It all works out. You just need a good mix.

      --
      Celebrate failure, and then learn from it - Nolan Bushnell
    26. Re:Field dependent requirement by HapSlappy_2222 · · Score: 2

      While I agree with you, there's really no reason (none!) not to take the advanced math classes in high school, or better yet, college, at some point.

      1) What are you gonna take instead? A foreign language? A basketball class? You're gonna have a ton of electives; Take advanced math.
      2) What if you get an amazing offer that you're not prepared for because you never took intermediate or advanced math classes? That sucks the suck of missed opportunity. Take advanced math.
      3) Advanced math skills could allow you to make elegant and speedy algorithms that run circles around a kludged in binary search or some garbage. Having higher level math skills gives you a TON more versatility, even if you rarely use them. Take advanced math.
      4) Calculus and the like goes hand in hand with physics, including motion, water dynamics, space calculations, particle behaviors, etc. Not to mention simulations. All of those would be AMAZINGLY useful for game programming, (or my dream job: creating advanced simulations of space and celestial behaviors). Take advanced math.

      Speaking more from experience, I wish I'd taken more math in addition to my CS courses. I ended up having kids pretty young and started working in IT, moving finally to running a print shop, which I enjoy, but every single day I run across amazing opportunities for high level engineering and/or programming, and I don't have the chops to apply. Trust me, take advanced math while you can.

      The end summary: there's no reason not to, and all the reasons in the world to get it done, since it's only going to help you.

    27. Re:Field dependent requirement by Austerity+Empowers · · Score: 4, Interesting

      When I hear "discrete math", I think of map problems, circuit minimization, bipartite graphs, and what boils down to PhD level computer science (or pure math, whatever floats your boat). You can take this as a freshman, I did.

      What you mean is "discrete time math", which is an entirely different type of math that has very strong roots in calculus. Discrete time math, at least as it is useful to me, is the mathematical method of working on sampled signals.

      You can get jobs with both, I think the former is far more useful to computer scientists in general. To be honest, most jobs won't really require it of you, but understanding why things are is frequently more important than understanding what they are, if you're going to have a long lived career. If you just want to code up someones lifecycle management DB, it's probably not useful. But if you want to do something new that solves a hard problem for a new industry, it is a tool you may find valuable. I know that tools I use as a EE rely on someone having a discrete math background to have solved them.

      The latter job is normally reserved for electrical engineers specializing in digital signal processing. You can definitely get a job with it, and you will use it in your job, although usually in the form of block diagrams you lay out in matlab. You may or may not use C to implement it, although most people I know at least start there since it's faster to write than verilog or vhdl.

      Video game programming is mostly trigonometry, but there's some calculus in there too. Physics engines of course use calculus and a lot of matrix math. You may use those as packages, but I think if you want to do something the library designers (who are mostly focused on physics and execution speed) didn't conceive of, it would be good to know the math that gets you there.

      As always the value of higher education isn't teaching you practical things that you can use today, it's teaching you how things work so you can use them in new ways tomorrow. I can understand frustration on this, we've all been there, and I do wish universities would spend a little more time on "practical" to augment the abstract and toss the liberal arts stuff which is useless for the intentions of 99% of people attending school.

       

    28. Re:Field dependent requirement by HapSlappy_2222 · · Score: 3, Informative

      How about something as simple as moving a virtual object a) from point A) to point B) while correctly calculating the gravitational effects of objects b) and c)? Classic calculus (I think; I never took enough of it, to be honest, and I regret it).

      Also: http://en.wikipedia.org/wiki/Stochastic_calculus

      Would be pretty awesome to have the chops to seed a random field.

    29. Re:Field dependent requirement by icebike · · Score: 5, Funny

      Excellent Pedantry Mr Nemesis.

      But what I need from you at the moment is how many are in inventory right now, and can we fill this bulk order today or are we going to have to back order?

      --
      Sig Battery depleted. Reverting to safe mode.
    30. Re:Field dependent requirement by clodney · · Score: 2

      I agree. If you can't add, subtract, multiply, divide and use algebra, then you won't last.

      The usual way I explain it to students/non-technical outsiders is that much of my job consists of solving what we used to call "word problems" or "story problems". So nobody tells me that I need to solve 3x + x = 12, but in the course of analysis I discover what that is indeed one of the equations involved.

      Boolean logic and basic algebra (and arithmetic of course) are absolute requirements in most programming jobs in my experience, but anything beyond that is more of a specialty requirement.

    31. Re:Field dependent requirement by geekoid · · Score: 5, Insightful

      And with a good concept of math, you can get all those question, plus tell them there likely stock flow, better ways to organize inventory storage, and advance logistics regarding said inventory.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    32. Re:Field dependent requirement by Jeremiah+Cornelius · · Score: 5, Informative

      Math = USA usage

      Maths = UK usage

      Der.: MathematicS

      --
      "Flyin' in just a sweet place,
      Never been known to fail..."
    33. Re:Field dependent requirement by zakaryah · · Score: 4, Insightful
      Mod parent up. It says a lot about math education that this discussion has focused on whether or not programmers ever implement routines related to calculus. Math is as much a way of thinking, solving problems and making useful definitions as it is about specific techniques or computations. To quote Wigner:

      In fact, the definition of these concepts, with a realization that interesting and ingenious considerations could be applied to them, is the first demonstration of the ingeniousness of the mathematician who defines them. The depth of thought which goes into the formulation of the mathematical concepts is later justified by the skill with which these concepts are used.

      Within computer programming alone, topics as diverse as decidability and Turing completeness, computational complexity, discrete probability, number theory for cryptography, calculus for almost any optimization problem, geometry not only for graphics but also for information theory, which is necessary for compression and coding - show that math is the heart and soul of all of these concepts! Beyond that, so many of the operations that computers are actually useful for carrying out are inherently mathematical. I get why so many people are dismissive of "higher" math - there is no shortage of lousy teachers or rote arithmetic in early education, boring classes and an overall negative reinforcement that can leave people jaded and scornful. But I've learned from experience that it IS possible to get young kids interested in real math, mostly by knowing some of the relationships to fascinating phenomena. Regardless, I think it is tragic to see such disparaging opinions of mathematics.

    34. Re:Field dependent requirement by bluefoxlucid · · Score: 3, Insightful

      Those look like third order polynomial curves to me...

    35. Re:Field dependent requirement by robably · · Score: 5, Funny

      I just have the hardest time getting used to seeing people spell math with a "s" on the end of it

      It's so it balances out the word "Lego", honestly.

      In the UK we have Maths and Lego. You swap the "s" over and have Math and Legos. From either side the other side looks strange and frightening and it makes you wonder how the people on the other side can get through a day while being so WRONG, but seeing as Math(s) and Lego(s) are two of the most wonderful things on Earth I say just accept it and move on.

    36. Re:Field dependent requirement by icebike · · Score: 2

      Math changes the way you think.

      Programming changes the way you think.
      It does so in ways most useful in programming. Some of these are annoying.

      Such as when the waitress say "If you need more coffee, my name is Sally", and I am left wondering what her name would be if I have enough coffee.
      I'm not sure it would be at all helpful to have the first derivative of Sally's profile pop into my mind and waste all that time reflecting on how Sally is just a stick figure.

      --
      Sig Battery depleted. Reverting to safe mode.
    37. Re:Field dependent requirement by pkinetics · · Score: 4, Insightful

      I don't know if college calculus helped me be better at data analysis or not. But what I do know is I can see, spot, and recognize trends and anomalies in data.

      I know high school calculus did not teach me this.

      My belief is that the suffering through college calculus, has helped me build the toolsets to understanding the data, identifying the normal and outlier behaviors and then determining what are the probable causes and solutions.

    38. Re:Field dependent requirement by sydneyfong · · Score: 3

      Did I ever say that?

      With my 1000 samples, you have a lookup table of voltage to remaining capacity.

      Now, with that in mind, and this you can guesstimate the remaining battery time available.

      Or, tell me what superior higher maths calculus magic you're going to use. If you think battery draw in a computer can be approximated by a differentiable function, please never do it.

      --
      Don't quote me on this.
    39. Re:Field dependent requirement by uniquename72 · · Score: 2

      Even outside of programming, "conceptually" is where most of higher math matters. Being good at calculus means you've trained you brain to visualize and comprehend abstractions on top of abstractions.

      (On a related note: This is why mathematicians (and smart people in general) are so bad at politics: The relatively small segment of the population who can think deeply and critically about a number of tangentially related variables don't generally buy into bumper-sticker slogans.)

    40. Re:Field dependent requirement by Em+Adespoton · · Score: 2

      1. In other words, calculus is necessary for computer science.

      2. For code monkey work, a good linguistics course and some courses on reasoning, logic and algorithms would suffice.

      3. For any architectural/analysis work, you need a firm grasp of discrete math and combinatorics (matrices, Big-O notation, etc) and a good foundation in statistical analysis (which itself requires at least a basic grasp of differentiation and integration -- calculus).

      So... if you're going to spend your career turning out iPhone apps using pre-existing models and engines, pick #2. If you're going to start as a code monkey with hopes of advancing a career in computer software, choose #3.

      If you want to get into actual computer science (the knowledge of electromechanical computing and how it works), you'll need the full shebang, as you'll be working on transforming information between analog (continuous) and digital (discrete) states. You'll also be aiming at a professorship, some research gig, or being woefully underworked and underpaid for your education until you've got enough hours in the trenches to make a good senior analyst or senior architect.

      That said, they had us doing engineering calculus and statistics for our CompSci degrees. I've found it great for building load-bearing structures and even for some physics modelling, but totally useless for anything actually computer-related. However, I took a biology statistics course for which I still have the textbook -- it has great statistical modelling methods that I use all the time designing complex computing structures (multiple databases, information I/O, etc). Discrete and combinatoric math I find I don't use regularly, but it shapes the way I think and every once in a while is indispensable.

    41. Re:Field dependent requirement by Darinbob · · Score: 3, Interesting

      A big example here may be in just using floating point arithmetic. Almost every programmer does this but I am astounded at how many don't really understand it or who do it wrong by naively assuming infinite precision. Not just programmers but I've seen actual scientists mess this stuff up.

    42. Re:Field dependent requirement by msauve · · Score: 2

      Except battery drain/charge doesn't follow a known curve, the future curve can't be accurately predicted (only based on assumptions), and computers operate in discrete steps. You're not dealing with infinitesimals or limits, and therefore not true calculus. More like, measure the current draw and voltage every x time, convert to energy (mAh or Joules), and add or subtract from the current battery charge level (coulomb counting). Reset to full or empty when appropriate. Similar in concept to integrals, but implemented discretely.

      Many batteries now have "fuel gauge" ICs in them, which handle much of this automatically, and even accommodate changes in battery capacity with temperature or age. Some may even use integrating capacitors to track energy movement in hardware.

      In any case, there's no direct use of calculus in software, just a similar concept.

      --
      "National Security is the chief cause of national insecurity." - Celine's First Law
    43. Re:Field dependent requirement by avandesande · · Score: 5, Funny

      That's not true- one way is to plot your curve on the paper (a pencil will do), cut it along the line and weigh it.

      --
      love is just extroverted narcissism
    44. Re:Field dependent requirement by stanlyb · · Score: 2

      It is funny, but 10 years after my graduation i realized this:
      1.You need to have math skills to become good developer, but only as a way of thinking, not as a knowledge how to prove this or that theorem.
      2.When i finished my graduation, i wanted to do a lot of libraries solving this or that problem, but i lacked the necessary programming skills. Now, when i have enough programming skills to do it, i am lacking the necessary math skills, funny, ain't?
      3.Finally to summarize it, you could develop very good math APIs only if you are very good developer, but once you become very good developer, it is virtually impossible to study again math.......catch 22.

    45. Re:Field dependent requirement by Immerman · · Score: 5, Insightful

      Yeah, as technical fields go I'd say computer programming is actually one of the *least* mathematically intensive, any engineer or hard science researcher will need calculus far more than you. (Of course if you wish to work in any of those fields you'd better know calculus, your colleagues are unlikely to want to use algebraic baby-talk to communicate basic concepts with you, and frustration leads to hiring someone better qualified)

      I would say the biggest value of calculus to programmers is that it's an extension of the mathematical language, and allows you to simplify your thinking considerably. For comparison think of any arithmetic-based physics classes you took compared to any algebra-based physics classes - I'm willing to bet that (assuming you actually had a good understanding of algebra) the algebra-based physics course seemed a lot simpler and more consistent (or alternately covered far more complicated and broadly-applicable topics without being more difficult). If you were to then to learn calculus and take a calculus-based physics class the "simplicity factor" is even higher - rather than hundreds of special-purpose equations to keep track of there's only a dozen or so fundamental equations from which all others flow naturally. Sure, you probably memorize the ones you use frequently, but for the other 10,000 you can derive them from the fundamental equations at any time. More importantly an intuitive understanding of the interrelation of the formulas will allow you better understand the interaction of the physical processes which they describe.

      Discrete mathematics is likely to be far more useful to a rank-and-file programmer, but the catch is that mathematicians are unlikely to dumb down the class to teach it using only algebra when the more powerful language of calculus makes the basics easier to discuss as well as opening the door to more advanced concepts. Still, if you don't know calculus and have to opportunity to take a "Discrete math for programmers" or similar algebra-based course, go for it. Just be aware that you're getting a version of the subject similar to the programming coverage in a 100-level "programming for people who don't know where the on switch is" class. Immensely better than nothing, but...

      --
      --- Most topics have many sides worth arguing, allow me to take one opposite you.
    46. Re:Field dependent requirement by Registered+Coward+v2 · · Score: 2

      As always the value of higher education isn't teaching you practical things that you can use today, it's teaching you how things work so you can use them in new ways tomorrow. I can understand frustration on this, we've all been there, and I do wish universities would spend a little more time on "practical" to augment the abstract and toss the liberal arts stuff which is useless for the intentions of 99% of people attending school.

      Interestingly enough, most people make the same arguement for basic math and science if they aren't in a technical major. The same arguement applies in botIh cases - those courses provide insights and knowledge about the greater world around you and help prepare you to function in it. Despite being an engineer stuff taught in liberal arts accounts for 80% of my income and my engineering background enables me to use it effectively.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    47. Re:Field dependent requirement by Macman408 · · Score: 2

      I'd disagree with that; most colleges don't really care how many degrees they hand out, in fact they try to get as many through as they can. What they do (usually) want, though, is to be respected; top schools attract top talent (both students and faculty), big grants, etc., which all help the school's growth. They don't succeed at that if they produce mediocre students. One way to get rid of the mediocre students (as well as some good ones) is to have hard classes that require you to prove that you can learn. In my college career, I took some classes that others probably would've considered "weed-out" classes (like Calc 3 and Physics), but they generally provided a good background for later classes (like Electrodynamics and Microelectronic Devices).

      After I graduated, they unified the different disciplines of Engineering so that you can take a prescribed freshman year of courses, without deciding which branch of Engineering you want to be in. This had the side effect of requiring Chemistry for us computer types, where it is perhaps less useful. However, I don't think it's outright a bad idea - I don't make transistors, I work with boolean logic. But without knowing how a transistor works, how it's made, how circuits behave, and lots of analog properties, I'd be a much worse engineer.

      The same thing applies to CS. A CS degree does not make you a good programmer. It teaches you a lot of things that will provide you a good background for your learning later in life, and a few things that are directly useful for programming like data structures and algorithms. It also teaches you about computer hardware, operating systems, etc.

      If all you want to be is a programmer, you can do that easily enough on your own. Just sit down and start studying your language(s) of choice. But trust me, you don't want to just be a programmer. Anybody can write code, it doesn't take long to learn how; for an example, see OP and millions of others doing it in high school. To be really good at it, you need to have the background so that you can go beyond just writing lines of code. You can develop a deeper understanding of what you need to do and why if you have the broad background that a degree can provide.

      That said, it's only what you make of it. I've recruited at college career fairs, and I'd say only a single-digit percentage of students (even at a school ranked in the top 10 in the field) have a good understanding of their field. So many students just go to class, memorize what they need to in order to get a decent GPA, then forget it. To get the most out of things, you need to develop connections between your classes, applying things that you learn in one to help your learning in another. To understand your Operating Systems class, you should know how a CPU works. To understand how a CPU works, you should know about digital logic. A good understanding of digital logic would include knowing about circuits. That circuits knowledge can be boosted by understanding the physics and chemistry behind it. Do you need to know chemistry to understand an OS? No. But it can be helpful in ways you might not imagine.

      That knowledge can make the difference between somebody that can make an incremental improvement to a design, and somebody that can understand the whole system and create a fundamental change to

    48. Re:Field dependent requirement by systemeng · · Score: 2

      I do chemical engineering research in my spare time. I actually had to use calculus a few weeks ago to derive an equation for making a mixture of 2 solvents as similar as possible to the properties of a third solvent. For two solvents, the answer was a calculus gimme.

      For three solvents, I had to break out multivariable calculus and Lagrange multipliers which didn't generate a solution but instead reduced the problem to a 4x4 matrix inversion. The inversion would have been most easily solved by feeding the matrix into the LAPACK library but a pedant could have solved it in his own code using Cramer's rule.

      In my case, calculus wasn't enough, it only reduced the problem to linear algebra. Basically, you have to have taken enough math to recognize when you have transformed a problem form an intractable form to a tractable form.

    49. Re:Field dependent requirement by lennier · · Score: 2, Funny

      I actually head a bunch of physicists at Los Alamos arguing about whether computer science was a science!

      Hmm, good question. A quick comparison:

      1. Can it sink a Pacific island?
      2. Can it invade alien planets with a fleet of space robots?
      3. Can it unleash hordes of zombies on the population of Earth?

      Well, our Google datacenters are still working on 1.
      Just done 2.
      But we've had 3 nailed for quite some time now.

      I'd say we're an emerging mad science with plenty of growth potential.

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    50. Re:Field dependent requirement by s.petry · · Score: 2

      Think about the larger scope of your statement. Media shows ignorance and drunken sluts as cool and functional members of society, and has for years. Gangsters are "cool" especially when they kill people, and dope dealers are an American success story (Hopefully you see the obvious sarcasm).

      I used to think this was all just unintentional jibberish to entertain the masses. Seeing the long term effects on society I am believing more and more that it's intentional degeneration of society. There is much more to think about regarding what I just stated. It's my hope that people notice and pass the word to hopefully make change.

      --

      -The wise argue that there are few absolutes, the fool argues that there are no probabilities.

    51. Re:Field dependent requirement by BetterSense · · Score: 4, Interesting

      Parent should be modded informative, not funny. This is a known technique to calculate the area under experimental curves. I suppose the cool kids nowadays just use a software package that automatically calculates the area under an arbitrary curve, and I could write a program to do it in a couple minutes, but the scissor + balance method is a long and glorious tradition.

    52. Re:Field dependent requirement by yakovlev · · Score: 2

      Might you be hinting at the fact that the three-body problem is generally not integrable, and thus calculus does not provide a complete answer?

    53. Re:Field dependent requirement by DRAGONWEEZEL · · Score: 2

      To quote Winger: "She's only 17" You need math to know wether that's legal in your state or not.
      Seriously though....

      I'm a lowly IT Analyst. I dont' think of my team as the matrix enlightened, but more like a custom car shop. You bring in a vette, and we tune it into the vehicle that you need, and fix whatever rattles. Sometimes that means stretching it out and adding 2 more doors and some cargo space (recreating a cts-v?) Most often though, it's finding ways to minimize maintenance.

      Being one of 2 people on my team that understand stats / higher algebra, I can fake code my way through many of our team's issues just by using Excel and a few Vlookups & compound ifs to quickly get necessary stats on small to medium flatfile data sets in just a few minutes.

      I can prove to my manager how much work I'm doing in comparison to my peers by illustrationg ticket closure rates over time, as well as show a function predicting when our team will theoretically hit 0 counting for new tickets. I often find myself Illustrating how order of operations can affect outcomes in all kinds of situations, etc..

      Where I'm going with this....
      While I'm obviously no math Genius. Math has certainly helped me apply various degrees of logic to solve problems much quicker than my peers. My EMM (english major mgr) is actually an awesome boss, but frequently requires the logic to be presented in an "informal" way not just for her, but for our many customers. In order to do that most easily, you have to understand it! (or use a car analogy).

      In conclusion, I'm JUST an analyst, 2nd teir IT up from Desktop, not a DBA, not an unix admin, not an architect, not a coder... and yet I apply math all the time. I can only imagine how much better I could be at my job if I could have gotten through calculus after I discovered Ritalin! I don't believe I could do higher level postions (design / coding) without functional (pun intended) use of math above my current skill level.

      --
      How much is your data worth? Back it up now.
    54. Re:Field dependent requirement by SimonInOz · · Score: 4, Insightful

      Mathematics (does anyone say mathematic? No - thought not) is a large collection of subjects: geometry, trigonometry, algebra, statistics ...
      Sport is a large collection of disciplines: football, rowing, ice-skating, ten pin bowling ...

      Language usage is not logical, nor consistent. Certainly the difference between British English and American is not consistent, nor even sane. It's a collection of pretty random changes, some the result of mistakes, some of changes in opinion (color -> colour), changes of usage (gotten is almost never used in the UK).

      I admit a favourite is Aluminium vs Aluminum. Now that was just a plain old battle, which both sides being a pain in the neck. (And as for the gallon/US gallon thing, I mean really! Let's all get over it and use litres).

      But why should I care, I live in neither country? I live in Australia (land of silver medals, apparently) where we just mix them all up and do what the heck we like.

      Mind you, I do feel there is a strong argument for claiming the English should be the reference for speaking - English.

      --
      "Cats like plain crisps"
    55. Re:Field dependent requirement by CFTM · · Score: 3, Insightful

      Liberal arts is not useless.

      Math is a beautiful thing, it helps us explain the world.

      So does philosophy.

      History teaches us about our past, inspires and frightens us.

      The liberal arts are a vital part of holistic education. Math and science are wonderful tools in a holistic education, but so are the liberal arts.

      It helps cultivate creativity and teaches people how to examine things from different perspectives, essential tools that augment the search for deeper scientific knowledge.

      Need them both; otherwise what are you doing with your ride on the merry-go-round?

    56. Re:Field dependent requirement by Archangel+Michael · · Score: 3, Insightful

      I've never had a Liberal Arts Major explain it either. I've never heard anyone explain it. You know why? Because it doesn't really mean anything specifically.

      From "Wikipedia"

      Postmodernism is a general and wide-ranging term which is applied to many disciplines, including literature, art, economics, philosophy, architecture, fiction, and literary criticism.

      Thanks Wikipedia, I think you proved my point. "General and Wide Ranging" ... meaning ... whatever.

      --
      Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
    57. Re:Field dependent requirement by Nemyst · · Score: 2

      Google fast Fourier transforms, or FFT for short. Very particular implementation of the discrete Fourier transform, which itself derives from the continuous Fourier transform, which is an integral.

      Also, big-O notation, at its core, can be defined by a limit. That's calculus right there. Sure, most programmers don't actually calculate the upper bound on their code, but if you don't understand what big-O even means, you can't understand why O(n lg n) is better than O(n^2), which means you don't see why heapsort beats bubble sort... You could also just try to memorize that O(something) is better when "something" is lower, but that's a band-aid, and on top of that without calculus you don't have the same kind of intuition with how functions behave. 2^n is ridiculously worse than n^2, yet if you don't know that and don't understand why, just plugging the first few numbers won't actually tell you that.

      There are many many more examples, but honestly the most powerful reason for all of this (and perhaps more) is that it improves your problem solving skills. You could ask "why not just make problem solving courses then?", but you can't "solve problems" in a vacuum. You need actual problems to solve, and maths just happens to have a huge body of problems, from easy to nigh impossible, right there for you to solve, and as a bonus there is a possibility you get to use those later on! Many of my physics teachers, when asked why we have to study obscure and extremely specific things in undergrad courses, simply say that it familiarizes you with physics all while making you good at solving problems, more so problems similar to those.

    58. Re:Field dependent requirement by carnivore302 · · Score: 3, Insightful

      Learning math is learning to think in a disciplined way. Math is not only calculus, it's also logic, discrete math and complexity. If these are not part of your natural thinking you will not be the best software engineer you can be.

      --
      Please login to access my lawn
  2. Optimization by Anonymous Coward · · Score: 5, Interesting

    If you want to be an efficient programmer in some specific domains, an understanding of higher math allows you to optimize your code. In game development this becomes important when you are trying to have your cutting edge game run on older hardware.

    1. Re:Optimization by Anonymous Coward · · Score: 4, Insightful

      Also, if you can't handle the math, you aren't cut out for the job. Even if you don't use it daily. Same reason that premedical students take physics (to keep morons out of medical school).

    2. Re:Optimization by SQLGuru · · Score: 3, Informative

      This.

      If you are just using libraries and assets, you won't do as much math until you need to tune a section of code. If you are writing the lower level graphics libraries, math will be important. Same for other programming areas -- the high-level programmer doesn't need to know the complex problem domain but the low-level programmer does.

      Oh, and learn Linear Algebra (as a simplification, Matrix Math) if you're doing much in a graphics field. It's not in the straight line of "important" math (Algebra --> Trig --> Calculus) but in a branch from there. It's quite useful in graphics, however.

    3. Re:Optimization by DJ+Jones · · Score: 5, Informative

      i work in Finance so perhaps I'm a little bit of an outlier but I use high-level mathematics every day. The other day I caught two programmers (who lacked mathematical backgrounds) attempting to use a binary solver to find a solution to a polynomial algorithm. They had spent two months of time and energy trying to figure out why their model sporadically failed. I had to pull a numerical methods textbook off the shelf and show them the Newton-Raphson iterative method.

      You don't use it often but there are definitely occasions when a lack of understanding leads to pitfalls.

    4. Re:Optimization by Kiaser+Zohsay · · Score: 5, Insightful

      Hear, hear.

      You don't necessarily do a lot of math as a programmer, but being able to think like a mathematician will be a great help. General problem solving involves logic and inference, in much the same way as proving theorems does. Some concepts from Discrete Math become so commonplace (decimal to bin,oct,hex,etc) that you hardly even notice them anymore, but will glaze the eyes of a non-programmer. I have also had to explain floating point evilness to more than one accountant.

      The most hard-math thing I have done recently in programming was double linear regression to project the time required for a file copy operation to complete. Some quality time with Wikipedia, a couple of pages of algebra, and a couple of days of debugging later, and I had a "time remaining" display that counts down like a clock. Take that, Windows Explorer.

      --
      I am not your blowing wind, I am the lightning.
    5. Re:Optimization by Em+Adespoton · · Score: 2

      Think of it as being a carpenter with one hand saw, one flat-head screwdriver, a bottle of wood glue, some clamps and one hammer. Sure, you can put things together, but you're never going to really create anything new.

      Having a full maths education ensures that you have the right tool for the job, whatever area of computing you actually end up going into.

      And you can never have enough statistical training. That's often what gets you making significantly more money, and tackling significantly more interesting problems.

    6. Re:Optimization by SQLGuru · · Score: 2

      I'm not saying that you shouldn't understand the underlying logic......but there's a huge difference between calculating a Fourier transform and knowing what one is and why you would want it. Or whatever other math subject you want. I took Calculus and Differential Equations, but I don't use any of it in my daily programming tasks. I understand them and could get a refresher if I needed to code it, but it isn't important to my ability to do my job. Which is ultimately what the OP asked.

      If you want to write the libraries, you need to KNOW the math. If you want to use the libraries, you need to know the math. In your oversimplification, you make it sound like you go out and hand build your computers from the silicon up because you can't trust the chip makers or the OS or the programming language or the.......well, you get the point. In order to be productive, you use tools. Better programmers understand the underlying principles and can identify when a tool they rely on isn't working properly (and files a bug report so that it's fixed) but they don't reinvent the tools that exist just because they have some high and mighty attitude towards APIs.

  3. How Many of You Actually Use Math? by thePowerOfGrayskull · · Score: 4, Funny

    How Many of You Actually Use Math?

    Last I added it up, three of me.

  4. Depends whether you include discrete math by MrEricSir · · Score: 4, Interesting

    The only math course in college that I felt applied directly to software engineering was discrete math. It's all about logic, graph theory, etc. and provides the basis for computer science.

    That said, most software doesn't really require calculus, geometry, or even trig. But certain fields (AI comes immediately to mind) require a significant math background.

    --
    There's no -1 for "I don't get it."
    1. Re:Depends whether you include discrete math by rrohbeck · · Score: 2

      How is RAID related to trigonometry?

  5. Comment removed by account_deleted · · Score: 5, Insightful

    Comment removed based on user account deletion

  6. graphics programming uses math extensively by parshimers · · Score: 5, Insightful

    go google quaternions, or rotation matricies
    properly understanding these sort of techniques that are used widely in 3D programming applications without having knowledge of linear algebra is damned near impossible

  7. Study math by Anonymous Coward · · Score: 5, Insightful

    It doesn't matter if you use it in practice. You'll learn to think critically to solve abstract problems. Don't buy into the hype that you don't need math.

  8. Instead of calculus by Skapare · · Score: 2, Informative

    Calculus is virtually unused in computers. It was designed as a shorthand for a world that didn't have computers. What you need to be learning instead is Linear Algebra.

    --
    now we need to go OSS in diesel cars
    1. Re:Instead of calculus by White+Flame · · Score: 4, Insightful

      Calculus is pretty much a modeling language when it comes to programming, not an implementation language. When it's appropriate, calculus is generally done outside of the program implementation, its output being the algorithmic shortcuts and validations that you can rely on when writing the actual code.

    2. Re:Instead of calculus by Anonymous Coward · · Score: 4, Insightful

      This is completely backwards.

      Calculus is used to describe nature in the most fundamental way. Computers simply work with approximations to nature that are reasonable for most types of predictions.

      So computers are the ones using a shortcut that is faster. Finding analytic solutions to differential equations is the most fundamental way of understanding nature that we have in science, but this is often much more difficult than using a numerical approach with a computer.

      In any case, most people need to learn the full way of doing things (ie the typical calculus way) before they can move on to shortcuts that may be faster.

    3. Re:Instead of calculus by Frequency+Domain · · Score: 3, Insightful

      You need calculus to actually understand statistics for continuous random variables.

  9. Re:Read More by Anonymous Coward · · Score: 5, Insightful

    Follow-up:
    Math is nothing more than a language that allows the speaker to make very precise statements. If you can't see how this is useful in programming then no-one can help you.

  10. Short answer by Anonymous Coward · · Score: 3, Insightful

    Others do what they can, mathematicians do what they want.

  11. What a piece of work is man... by Impy+the+Impiuos+Imp · · Score: 5, Insightful

    You are probably not gonna use what you learned in Huckleberry Finn or History, either.

    There's a reason these are taught, and it's not all about pure facts.

    --
    (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
    1. Re:What a piece of work is man... by Spritzer · · Score: 2

      True. It's about revenue.

  12. It depends what you work on by NixieBunny · · Score: 2

    I don't use much math in my work on radio telescopes, which is mostly making gizmos to control physical stuff. Someone else worked out the algorithms long ago, and I do the hardware end of it.

    But I work with coders who have to do some rather intense math to solve problems (mostly coordinate transformations or path generation) that had been solved poorly in the old software.

    --
    The determined Real Programmer can write Fortran programs in any language.
  13. Problem Solving by MatrixCubed · · Score: 5, Informative

    While programming is not necessarily math-heavy, mathematics gives you experience with problem solving, sometimes in unconventional ways. It's really the only technical problem-solving you do in school, and it's an important learning step, for what it teaches indirectly as well as what it teaches directly.

  14. Concepts versus skills by addie · · Score: 5, Insightful

    It's not necessarily the actual math skills that are important - it's the understanding of the concepts behind it that will increase your understanding of any kind of process, job, or task - programming being one of them. Knowing what the area under a curve means is probably more important than knowing how to calculate it.

    I don't use calculus or any kind of advanced algebra in my day to day work (in communications, far from programming) but I'm sure glad that I understand the basic concepts, thanks to a first degree in engineering.

    1. Re:Concepts versus skills by CityZen · · Score: 2

      I second this. While actually having to perform calculus might be a rarity in daily life, understanding concepts like the rate of change and integration often come in handy when solving problems. Heck, just knowing the difference between a linear function and an exponential one should be important to anyone who thinks about using a credit card or saving money.

  15. Thinking differently by ubergeek65536 · · Score: 3, Interesting

    Although you might not use a lot of advanced math learning it changes how you solve problems. I found it abstract algebra and formal logic the most useful.

  16. Mathematical maturity by billakay · · Score: 2

    If you really want to get into game programming, the advanced math will be your friend. Supposedly even some ancient (and infurating) concepts like quaternions are coming back in computer graphics. For anything else, it still isn't going to be a waste of time. The analytical skills and "mathematical maturity" obtained by taking a good calculus course (and actually applying yourself rather than just trying to pass) will go way further than the actual calculus will for most people.

    1. Re:Mathematical maturity by Tough+Love · · Score: 2

      Supposedly even some ancient (and infurating) concepts like quaternions are coming back in computer graphics.

      Quaternions absolutely dominate game programming. However, the vast majority of game programmers do not understand quaternions, they know about quaternions. There's a difference. For example, they may be able to program an interpolation or quaternion additions using the library API but not have any clue how to write or debug the library functions. For most game programmers, quaternions are just a temporary representation for an expression or two, and the quaternion expressions are sandwiched between matrix operations with incoming and outgoing conversions. Usually, the result is quite disgustingly inefficient compared to actually understanding quaternions, thus being able to minimize the conversions between matrices, quaternions, Euler angles and so on.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
  17. Data Mining/Big Data/Machine Learning.... by swframe · · Score: 2

    Checkout ai-class.com to see some of the ways in which Math gets used in computer science. That class touches on just a few topics and doesn't go very deep. When you work in the machine learning field, there is a lot more math that you'll find helpful.

  18. If you want to write games, you need calculus by damn_registrars · · Score: 4, Insightful

    Realistic physics requires it. On top of that, the more math you learn before entering the field, the more opportunities will be available to you as a programmer. Don't cripple yourself while you're still young.

    --
    Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
    1. Re:If you want to write games, you need calculus by Baby+Duck · · Score: 2

      All of the Halo games were among the most successful entertainment products of all time -- at the time they were released. Most of the physics was handled by a blackbox physics engine they bought from another company. That's why they couldn't fix the jump hacks in Halo 2 ... the glitch was in the physics engine that spared Bungie needing any advanced math to make great games. It was more economical for them to enjoy their ignorance and let the glitch stand.

      A lot of game compamies do this. Just buy the latest Quake/Unreal/Serious engine and get on with your game.

      --

      "Love heals scars love left." -- Henry Rollins

  19. Better question by need4mospd · · Score: 5, Insightful

    How many of you use the problem solving skills that were developed in math class? I may not use math everyday, but I certainly solve complex problems that I'm sure others with less math education would struggle to solve.

  20. Logic is Math by Hatta · · Score: 4, Insightful

    Logic is math, and EVERYONE needs logic.

    Even if you never write a proof or solve an integral in your working life, it's important to understand how math works. Life, all of it, is one big word problem. If you don't have a basic understanding for the mathematical nature of the universe, you're simply not going to be able to navigate it as well. If you don't understand how mathematical arguments work, you won't be able to offer useful opinions on the matters of the day.

    I'm not sure that everyone needs to know calculus, but everyone needs to know what calculus is and what it's used for. Everyone needs to be numerate.

    --
    Give me Classic Slashdot or give me death!
  21. If you don't know any math... by John+Hasler · · Score: 2

    ...then you certainly won't use any. If you do know some and are comfortable with it you will find many uses. On the other hand if you struggle resentfully through the minimum required math certain that you will find no use for it, you will be right.

    --
    Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  22. I misread the headline. by bennomatic · · Score: 5, Funny

    Clearly I've been watching too much Breaking Bad.

    --
    The CB App. What's your 20?
  23. One data point (me) by ukpyr · · Score: 4, Interesting

    Trig as you already know is great for 3d stuff.

    Calc is great for decision logic and business intelligence

    Stats are great for business intelligence type work

    As someone who did horribly in high school and college math, I did the minimum for my degree. I've retaught myself much of stats and calc because I found them useful in my personal projects. I find them more rewarding now that I have applications to use them in. I was a bad student though early in life. YMMV

    Most of the math in the corporate programming world is really elementary. Basic algebra or less.

  24. Bioinformatics by Fwipp · · Score: 2

    My current job title is "Bioinformatics Analyst," and I need to at least understand a good bit of math that I didn't learn in highschool. While it's rare that I directly need to implement complicated mathematical programs, much of my job involves tuning parameters for specialized software.

    I need to have a good understanding of the changes that are likely to result from adjusting parameters X, Y and Z before I submit a job that takes upwards of a day to complete. To do that, I need to read the papers and understand the algorithms.

  25. Re:Yes by Nugoo · · Score: 3, Insightful

    Agreed. Any graphics engine uses a ton of linear algebra under the hood, so you'll need that if you ever want to modify one or write your own. Also, if you want to do any kind of physics simulation (which you probably will, if you're doing games), you may need calculus (but maybe not, since video games fake as much as they can get away with).

    --
    I explicitly release the above into the public domain.
  26. You need the byproduct by gilgo_22 · · Score: 2

    You don't really need math. But the thought processes learned through math training are really useful.

  27. Least Squares by DeeEff · · Score: 2

    I use linear algebra and calculus everyday.

    As a geomatics engineer, my programming often involves using and understanding different levels of vector calculus as well as some basic linear algebra.

    By the time I'm 30, I probably won't use it as much. In the meantime, I use it everyday to solve different problems.

  28. Re:Did anyone else ... ? by BronsCon · · Score: 2

    Reading Slashdot headlines is not normal.
    On Meth, it is.

    Meth. Not even once.

    --
    APK quotes people (including myself) without context and should not be trusted. Just thought you should know.
  29. Opportunities by KalvinB · · Score: 2

    The more you know the more opportunities you will have and the more earning potential you will have. I've used college level math in programming projects before. I have a friend who's a PhD making buckets of money doing very high level math. So if you want to make buckets of money doing high level math related programming, you will need to learn high level math. If you're comfortable making decent money limited to projects going no higher than high school math, then that's all you need.

    So Trig is like 3 houses in Monopoly. You've made a huge leap in earning potential but you're not at the top yet.

  30. And of course, the obligatory XKCD by bennomatic · · Score: 4, Insightful
    --
    The CB App. What's your 20?
  31. Re:Money by Skapare · · Score: 2

    If you can't do the maths up through at least a year of linear algebra, and didn't make at least a B, I don't want to hire you for any of our technical jobs.

    --
    now we need to go OSS in diesel cars
  32. Algebra and Statistics are key by crow · · Score: 4, Interesting

    The key areas for math in general computer science are algebra and statistics. Even if you are not actively using algebra, the thought processes in programming are very similar. Statistics are critical for analyses of system behavior. Linear algebra is useful occasionally, but mostly it's just something that is nice to have been exposed to.

    I never use calculus, but it was in taking a calculus class that my algebra skills solidified, so the coursework was not wasted. In general, you should always progress one step further in coursework than you expect to actually need.

    Also, there's a big difference between knowing enough to get an entry-level programming position, and knowing enough to have a career where you end up designing major projects.

  33. High school level programming. by khasim · · Score: 5, Insightful

    The bulk of programming jobs have nothing at all to do with math beyond the high school level.
    Its mostly counting beans and keeping records. Really, it is.

    Which is also why there is a lot of high school level code out there.

    If you never learn more than you need then you'll never know if you have learned as much as you need.

    Learning more math won't always make you a better programmer. But it will show you whether you can do something better than someone who knows less math.

    1. Re:High school level programming. by fredprado · · Score: 5, Insightful

      And that is also why most programmers can't even choose which sort algorithm they should use, and have no clue about why their SQL queries are taking 100x the resources they should take.

    2. Re:High school level programming. by Monkeedude1212 · · Score: 2

      At first I thought you were joking.

      Most programmers don't even know about sorting algorithms.

      They just throw everything into an Array or List or Vector or some random collection class that they first looked up how to use, and just use myList.Sort()

      The only thing they bother doing in SQL is a
      'select * from table where id =' + strId;

      I think you're giving them more credit than is due.

  34. You'll need it for the GRE by Mondoz · · Score: 2

    If you want to get into post-graduate studies, this means taking the GRE test. There's a lot of math on the GRE that you have to do quickly.
    None of it is terribly difficult, but I found that I was very out of practice, which slows me down quite a bit.
    If you can do high school math in your head quickly, it vastly improves your score.

    I've been in the CS industry for nearly 12 years and offloaded nearly all my high school era math off to calculators and spreadsheets. Very rude awakening when I took my first practice GRE.

    --
    /sig
  35. Re:Yes by djdanlib · · Score: 3, Insightful

    Also, you'll never be able to verify that your algorithm is working by manually processing sample inputs. That's a tremendously useful ability to have. See the following thought process:

    >> "See if I give it A, it should give B, but instead it gives C"

    >> "Let me try it by hand"

    >> "My algorithm is wrong" or "My implementation of the algorithm is wrong" or "I'm using the wrong algorithm to solve this problem" (knowing the difference saves you notable amounts of time)

    >> "I now have an understanding of the actual problem and can solve it"

  36. It Teaches How to Play Ball and Complete a Project by eldavojohn · · Score: 4, Insightful

    Yeah, you'll notice that a lot of the richest and most successful people never completed college. And that's fine but in my humble opinion, that's a risky bet to take. I've done interviewing for developers for a fortune 500 company and seeing a college degree on the resume doesn't cause me to kick back and say "Oh thank god, they have taken Multivariate and Differential Equations calculus, now all my Spring applications are going to be able to compute the triple integral (by parts) of a toroid in three dimensional space as it passes through a fluctuating field exerting a force on it!" (Yes, I know that makes no sense at all) No, what that tells me is that we're going to be able to throw you in an environment where you have no clue what to do but resources to go out and find what to do. On top of that, you're going to be able to digest the driest and shittiest of documentation (like a calc book) and come back to me and have gleaned some working knowledge from it. Sure, you might have to go to the next cubicle and say "What is up with this stack dump?" And you may have to seek out an authority (like a professor) but you're going to come to some answer for our problems.

    In short, it tells employers that you know how to play ball and high order concepts don't frighten you. I'm not going to throw integration by parts at you on the job but it is good to know that you stepped up to that challenge -- even if it was just to get to a final, pass it and move on. In short, I went to a liberal arts college, I took classes on music theory, calculus, physics, Native American studies, advanced literature, etc and in those classes I created four part inventions, mounds of calculations, papers, powerpoints, etc and I have used little if any of that in my day to day job post college. But in mastering those processes I learned how to play ball. Now, I'm not saying you need to go take music theory and Native American studies. But the thing with Calculus is that all software development is logic and math. So don't you think you'd want to get all your i's dotted and t's crossed so that any employer that looks at you knows you have studied beyond the requirements of math for writing software into a realm so lofty they won't even be able to use it? I'm sure glad I did.

    --
    My work here is dung.
  37. Depends on what you want to do by paulpach · · Score: 3, Informative

    I developed a game using Unity3D.

    I make heavy use of trigonometry, and a very small part of calculus.

    Your question really depends on what you want to do:

    • * For game development (what you seem to be particularly interested on), calculus is almost irrelevant. You need trigonometry.
    • * If you work in operations research, then algebra and linear programming are a must.
    • * If you work on average database backed web applications, just some basic algebra is enough.
    • * If you work on AI related field, calculus is very important.

    There are other fields that are not typically taught in math courses but in CS that are heavily math related. Like performance analysis. This I use a lot, but once again, it really depends on what you work on.

  38. set theory math by magarity · · Score: 3, Informative

    I do a lot of database work so it's set theory all day long. It's in a bit of disguise as it isn't what normally is though of as math but set theory is a math field.

  39. I recommend that you take no courses in Mathematic by k10quaint · · Score: 2

    You should not waste your time with it. Otherwise, you might end up competing with me for the interesting jobs. Neither of us wants that. ;)

  40. Depends by sydneyfong · · Score: 2

    Depends on the Maths, depends on the CS.

    "Logic", if it can even be considered a branch of Mathematics, is always important. The various topics under "Discrete Maths" often overlap with CS. The habits of rigorous thinking, proofs, use of counter-examples, etc. are all indispensable to proper programming.

    That being said, my personal experience in web and systems programming is that as long as you don't go into game and graphics programming, you don't really need to apply any "mathematics" beyond high school level, if even that. The curious thing is even though you may not really consciously use mathematics, better programmers generally do have a pretty good grasp of higher mathematics....

    But then, I've really never done any damn calculus in my programming career (not that it's particularly long). In fact, unless you're doing something very domain specific which needs the actual maths, usually an approximate solution will be simpler, easier to maintain, and less error prone. (It's not always easy to resist the temptation to implement the fancy solution though)

    (PS: And I speak from personal experience -- as a programmer it's often helpful to have friends that actually know their maths very well :-p)

    --
    Don't quote me on this.
  41. One thing's for sure by Anonymous Coward · · Score: 5, Funny

    You won't command much credibility if you can't even spell "orthogonal" right.

    1. Re:One thing's for sure by gorzek · · Score: 4, Funny

      You don't have to be able to spell it in order to say it!

    2. Re:One thing's for sure by RaceProUK · · Score: 2

      That's what I don't get about the US word 'math' - like the UK word 'maths', it is short for 'mathematics', which is a plural. Conventionally, plurals end in 's'. Therefore, by convention, 'maths' is the correct abbreviation.

      *waits for the inevitable counter-examples like sheep and data*

      --
      No colour or religion ever stopped the bullet from a gun
  42. Linear Algebra by Teppy · · Score: 5, Informative

    I do most of the design and programming on A Tale in the Desert and Dragon's Tale and I've seldom/never needed to do an integral or solve a system of differential equations. Understanding those concepts does frequently influence game design, however, so having taken those courses was important, at least for the kind of games I do. (Giving specific examples would require that you are familiar with gameplay for each of those games, but feel free to contact me directly if examples would be helpful.)

    But on to specific branches of math: You'll certainly use linear algebra doing 3D programming, and IIRC that's considered "beyond" calculus. (If you're using OGRE or Unity 3D, at least at the API level then I'm surprised you haven't run into this.) Applied Math, which is often a college freshman course for a CS decree is crucial to all sorts of programming, especially games. Combinatorics is critical for game design, though if you're just planning to be a programmer, not so much. Numerical Methods will teach you exactly when and why rounding errors to happen, how they can compound each other, and in general help you write squeeky-clean math code. The game I'm working on now is a gambling MMORPG - I probably don't even have to say how important statistics is, if this sort of thing is in your future :)

    Notice how different each of the math subjects above is? A lot of this comes down to learning how to learn, and that's the one thing that in my experience differentiated high school academics from college.

  43. what about other NON college education. by Joe_Dragon · · Score: 2

    what about other NON college education.

    http://articles.chicagotribune.com/2012-03-11/news/ct-oped-0311-page-20120311_1_college-costs-rise-kayla-heard-college-attendance

    "Yet, give Santorum his due. He touched on a reality that deserves more public discussion: College isn't for everyone. Some very bright students thrive better while learning a hands-on trade, for example, than they do in a classroom. Others simply can't afford the time or tuition of college because of their personal circumstances."

    College is not for all and there others ways to learn then going to a big 4 year plan. College needs to be cut down / cut up into small chunks that can better fit fasting moving tech and can work for people who are working and want to gain more skills but can't fit into the college time table.

    http://articles.chicagotribune.com/2012-03-25/news/ct-oped-0325-page-20120325_1_collegiate-learning-assessment-college-students-richard-arum

    "I recently wrote about the possibility of testing and certification for what I called a "college-level GED." Like the current GED test for high school equivalency, it would award certification to bright, hardworking job applicants who want to show potential employers how much they know, even though they never graduated from college/"

    community colleges and trade schools are not the party schools that some colleges are.

    "Ohio University's Richard Vedder, my former economics professor who gave me the collegiate GED test idea, is even more blunt in his assessment of today's academia: "Universities are becoming more like country clubs," he said, with climbing walls, indoor tracks and other luxuries that give students "something else to do with their free time besides drink and have sex."

  44. Until I had the hammer by EmperorOfCanada · · Score: 2

    I didn't use math much past counter++; until I learned some hard core math. Then I had a new hammer and the math in my code grew to the point where I now need GPUs to keep up. I love OpenCL.Discrete math rocks. I look back at my old pathetic basic algebra self and shudder.

    Often it is useful for either figuring out what is going to happen when some set of algorithms get pounded (instead of just coding up a script to bash them) or in cool analysis of data that otherwise just sat silently in some log file.

  45. A job or a calling? by Terje+Mathisen · · Score: 4, Interesting

    If you just want to make a living, then you'll probably never need any higher math.

    OTOH, if you are at all serious about programming as something you want to be really good at, then you need a _lot_ more.

    I've worked with low-level game code (Quake asm), with video & audio codecs (MPEG2, h.264, ogg vorbis), with crypto (one of the AES candidates) and I wrote most of the code for the compiler sw workaround for the Pentium FDIV bug.

    I doubled the speed of a Computational Fluid Chemistry code base, so that simulations ran in half a week instead of 7 days.

    I've also won a couple of international code optimization contests.

    The key here is that except for the h.264 optimization all of this has been pro bono, my daily job at a Norwegian IT company has almost never _required_ me to know a lot of math, but having math as a hobby means that I tend to spot all the bogus calculations in Powerpoint presentations. :-)

    Terje

    --
    "almost all programming can be viewed as an exercise in caching"
    1. Re:A job or a calling? by Genda · · Score: 3, Insightful

      Wouldn't you also say, that having heavy math chops allows you to see clearly when the line from problem to solution is non-optimal? Wouldn't you say that because you've grown your mathematical mind you can clearly see natural symmetry to problems and their data sets? Wouldn't you agree that the rigor of mathematical thinking is precisely the kind of mental ecology in which to couch programming problems? A football player might spend thousands of hours running through obstacle courses lined with tires... I've never seen a single tire on a football field, and yet they keep running them in training. Because those tires exercise the precise muscles those football players will need in the competition in the real world. Grow you math chops. Its worth it.

  46. not specific knowledge but good testament by call+-151 · · Score: 4, Insightful

    Students who do well in the more advanced undergraduate math courses (real analysis, abstract algebra, etc.) may never specifically use those precise topics, but good performance in those courses serves as a strong testament about being able to deal with abstraction, work precisely, and construct correct arguments. Those skills will serve students well and may impress employers/managers that the student actually is pretty good at thinking and problem-solving.

    Linear algebra as mentioned above is probably more likely to be specifically useful in applications: modeling, graphics, science and engineering settings, as typically relationships are too complicated to be understood effectively by anything besides a linear approximation. But many linear algebra courses are technique-based and rather cookbook, missing an opportunity to take advantage of good more abstract approaches.

    --
    It's psychosomatic. You need a lobotomy. I'll get a saw.
  47. I've needed more calculus than I got in school by Animats · · Score: 4, Informative

    I have an MSCS from Stanford, but it's from 1985, when the logicians and expert systems guys were running things. So I have lots of number theory, combinatorics, automata theory, and mathematical logic. I even took "Epistemological Problems in Artificial Intelligence" from John McCarthy.

    So what did I end up needing? Tensor calculus. I realized that expert systems AI was stuck. The future of AI capable of dealing with the real world seemed to be in nonlinear control theory. Which is all calculus and statistics. I struggled with that, and got legged running over rough terrain figured out and patented. But this was 1994, and the simulators sucked, and I couldn't get any further without better simulators. So I spent a few years beating on that problem, and produced the first simulator that could do a ragdoll falling downstairs.

    By 1997, I had that solved, but it was kind of slow. A 200MHz Pentium Pro just wasn't enough engine to get it up to real time, and that was the top of the line in CPUs back then. By then I was burnt out on the problem, and it wasn't making much money, so I sold the technology off to Havok and went on to other things.

    I didn't see that what was needed was to couple nonlinear control theory to Bayesian statistics. That's what makes all those quadrotors zip around so precisely. Modern statistics barely existed when I was in school. Now it drives everything from finance to speech recognition to advertising, so it gets worked on and people study it. Nonlinear control alone never had that big a market, so the field didn't get enough attention to move it forward.

    So I needed more math, and different math, than I got in school.

  48. Diff equations are key to modeling the real world by durdur · · Score: 3, Informative

    But a huge amount of computer science is not about modeling the physical world. It is about organizing data or doing accounting or serving up web pages. Advanced calculus does not help at all with that.

  49. Depends on what you want to do by DaChesserCat · · Score: 2

    If you do not have a decent grounding in set theory, please do NOT attempt to do any significant database work.

    Basic select, insert, update and delete can be dealt with via modern ORMs. Anything beyond that, such as joins, intersections, unions etc. are almost entirely set theory. Where is that covered in the traditional mathematics curriculum?

    Yes, some ORMs purport to do that stuff, too, but they rarely do it well.

    True story: I was taking a database course as part of my college education. The professor introduced us to relational theory, including an algebraic notation which described subsets of fields in a record and subsets of records in a table. Then, over the course of three class periods later in the semester, he taught us SQL. It boiled down to "this is how you do xxx in SQL." From that, we got table creation/destruction, selects, views, subqueries, aliased fields and tables, inner and outer joins, the whole enchilada. I've been able to build on that and do some pretty heavy-duty SQL work but I had to know the underlying theory. Being subsequently trained in RPG, where much of the legacy code does NOT use SQL (and you invariably don't have time to replace it with code which does), that theory comes in very handy.

    We understood the underlying theory, all expressed via math. Learning SQL was a simple matter of learning how to express our desires in a language the computer could understand.

    You need at least algebra to understand O(n) notation. Without that, you're usually stuck either cluelessly gluing together someone else's libraries (a LOT of that in modern SoftwareDev) or continually recreating O(n^3) (or worse) algorithms.

    If you aren't going to learn calculus, one can only hope you never need to do any kind of Numerical Analysis. Any course where you're allowed to use Mathematica, because the calculus (such as taking the third or fourth derivative of a function) is "overhead" relative to the material being covered, is the very definition of "heavy duty." And, since physics is largely the application of calculus, avoiding calculus means you also need to avoid anything which involves physics. Stuff like game design (Angry Birds uses plenty, Angry Birds In Space uses more), putting rovers on Mars, wireless network design (wave propagation between obstacles and through different media is very calculus intensive); you know, the COOL stuff.

    For the typical web developer, creating shiny web pages which do extremely simplistic database work, you probably won't need calculus. Ever. Is that all you ever aspire to be? And how long can you continue to do that without being crowded out by graphics design wizards with increasingly intelligent design tools?

    --
    ... by the Dew of Mountains the thoughts acquire speed, the hands acquire shakes, the shakes become a warning
  50. Re:It will limit you by Smidge204 · · Score: 2

    The only time it's really appropriate to stop learning is when you're dead. (Though I suppose if you think learning can only happen in a school you may as well be...)

    The point is whether or not the math they teach in high school is useful for anything and should be taught. The problem with this thinking is the high school years are rather formative for many people - the subjects they are exposed to and their experience with them can have profound impact on the decisions they make that will form their lives and professional careers.

    So take math. It may not be "useful" but it will influence you and your worldview, and that's important.

    BUT! If I were to change anything, I'd shift Calculus later and put more focus on Prob & Stat - A better understanding of prob & stat will make your life better and really help keep your bullshit detector well tuned.

    Also, this comes to mind and is worth watching, tangentially related.
    =Smidge=

  51. Use it every damned day. by drstevep · · Score: 2

    Understanding why the math works makes the programs work. Understanding probability and statistics make my inline sampling calculations correct. Understaning how spline calculations work make my curve approximation code (or even the use of curve approximation libraries) correct.

    Yes, there are a lot of good libraries out there. They are optimized. They are error-correcting. They are correct. And knowing what they do and how they work enables you to use them effectively.

    When you talk to your clients (or your bosses) and they ask you about how you did something, the ability to pull the core math and explain it will go very far.

    It is kind of like lifting weights. The lifting isn't its own end. It makes the daily (carrying 40 pound boxes of cat litter into the house) mundane. So it is with math. Understanding simple things as polynomial interpolations for higher-order polynomials can make or break your ability to project storage estimates. Understanding O() notation will help you program well.

    Don't scrimp on the math. There are enough bad systems out there for other reasons already.

  52. Algorithms by Tim+Ward · · Score: 3, Insightful

    Not everybody needs to use a nondeterministic finite state machine every day, and not everybody needs to calculate the transitive closure of a sparse connectivity matrix every day, but these are (simple) examples of reasonably commonplace algorithms that you can't really understand without being able to do the maths.

    As an even simpler example, you can't really use SQL effectively without understanding the maths behind a relational database. I know this for sure, because I keep coming across SQL applications that were clearly written by people with no understanding of the maths, and I get paid lots of money to fix them up properly.

  53. Re:Very little, frankly. by nogginthenog · · Score: 2

    Nobody divides by 1024!

  54. One More For "Lots of Math" by Bob9113 · · Score: 2

    I use a lot of math in my work. From ballparking load estimates using basic math to behavioral analysis using linear algebra to data analysis using calculus, I use it all the time. Set theory, logic, graph theory, statistics, on and on -- it all contributes significantly to getting the job done right the first time. Having a background in a variety of maths also helps to visualize problems and shape solutions. I've added as much to my math skills since becoming a professional programmer as I did in school.

    There are fields in software, like interaction design, that don't require a strong higher math education, but if you have a good math background it will give you the freedom to explore more opportunities.

  55. You got to add a 'u' and silent 'e' by SomeoneGotMyNick · · Score: 4, Funny

    US: Math

    UK: Mauthe

  56. I use math constantly by ceoyoyo · · Score: 4, Insightful

    In undergrad (CS) I did more math than was required, and honours math at that. When I started grad school I was introduced to a transform we were using to analyze medical images. There's an article somewhere where I'm quoted as saying that some smart grad student is going to come along some day and improve the algorithm for calculating that transform so that it's actually practical. It turns out the smart grad student didn't come along, so I had to do it. That involved a lot of calculus, both continuous and discrete. Now I mostly develop new medical image processing techniques and analyze data, which involves fairly high level statistics. Statistics is all calculus and, when you get further on, calculus and linear algebra.

    You say you want to be a game programmer? Here are some of the papers from SIGGRAPH this year. Take a read through some of them. This one might be a good place to start... most of the authors are from Pixar. How much math do you see? How much math do you understand? These are the algorithms you'll be working with by the time you graduate. Note that there isn't a lot of continuous calculus in these (but a lot of discrete!). Somebody has already done much of the hard work of discretizing it for you. That's not always the case.

    You can probably get away with not learning any math and being a run of the mill code monkey. If you want to be good at what you do though, learn the math.

  57. Missing the Point by Roger+W+Moore · · Score: 3, Insightful

    No, the point of a challenging degree program is to maintain academic standards. To be awarded a degree you need to have achieved a certain standard. If the sole aim was to limit the number of graduates in a program you would simply limit the enrolment. When we have been hiring IT staff one of the things we have looked for is a degree because this shows that they have some depth of knowledge beyond the basics. Sometimes the confidence that this brings can be very important for adapting to new situations.

  58. Math is not for "weeding out" ... by perpenso · · Score: 4, Insightful

    The point of high-level math and physics classes is not because you "need" them in your job as a programmer. It's a way to limit how many CSE degrees are granted. I was told this straight-up by my college advisor ...

    Then like some advisors he is a dumb-a**. I've been offered some pretty crappy advice and insight from advisors, don't take what they say too seriously.

    You are basically getting into the trade school vs university argument. A trade school can produce as good a programmer as a university. The point of the university is to provide a more well rounded education so that a person has more options.

    I too had some chemistry, physics and years of math that appeared to serve no purpose other than to "weed out" people from the program. However to my surprise I once had the opportunity to participate in a project that would port some chemistry software from mainframes to PCs. I would be interacting with world class polymer chemists. They did not expect me to be a chemist but they did expect me to be scientifically and mathematically literate. The general ed chemistry and physics and the years of math for computer science actually turned out to be useful.

  59. Mathematics by Lando · · Score: 2

    I tend to use math most days. Estimation, ballpark figures, cost per ounce etc and I no longer work in the computer industry. Now that being said, is there justification for higher level mathematics in computer programming.

    Well, yes and no. The typical programmer isn't working on anything complex, just providing a bunch of criteria for a switch statement or copying information from one location to another, not a big deal, but when you start working with algorithms, not to be confused with (Al Gore)ithms an understanding of upper level mathematics can certainly help. Discrete mathematics is a no brainer since it focuses on logic and proofs which can help a programmer find edge cases and cut down on errors via the processes you learn in discrete mathematics.

    Calculus and other higher math is generally useful in making algorithms run more efficiently. Brute force searching algorithms take a lot of time, binary is significantly faster, but using calculus can even improve on the binary search methods in the right circumstances. The thing is, if you don't have the knowledge about high level techniques you cannot use them. For instance, if you don't know sorting routines a bubble sort seems incredibly fast in comparison to sequel sorting however without the knowledge of sorting algorithms you wouldn't realize how ineffective bubble sort is in comparison to say merge sort.

    Most programming isn't focused on efficiency and most things can be brute forced within a reasonable timeframe with modern computer systems, however, knowledge of calculus and other higher level mathematics can help quite a bit as techniques can be transferred into computer programs that need them.

    I guess you could make the same comparison to electronics, does a programmer really need to know electronics, diodes, resistors, refresh rates and protocols to make a computer do something useful? Probably not, but if you do know those things it can make you far more efficient and effective than the person who does not know them depending on what type of programming you are doing. Whereas most systems are built requiring basic skills or specific study of one area, higher level mathematics provide tools that can be used in a wide range of applications and tend not to be limited to specific cases. With the knowledge of upper level mathematics, when you do run into situations where it can be used, you can pull out a book or do a search to find an efficient algorithm whereas when you don't have the knowledge you'll end up spending a lot of time re-inventing the wheel.

    --
    /* TODO: Spawn child process, interest child in technology, have child write a new sig */
  60. thinking by carpefishus · · Score: 2

    Learning math teaches you to think. It is very worthwhile.

    --
    Facts take all of the premium out of arm waving - T. Reynolds
  61. programming vs development/engineering by luis_a_espinal · · Score: 2

    The bulk of programming jobs have nothing at all to do with math beyond the high school level. Its mostly counting beans and keeping records.

    There is the activity of programming or coding, and the activity of software design. Coding by itself requires little behind HS math. Development/engineering, on the other hand, requires the person to have good analytic skills. From choosing the right algorithm or data structure to composing good architectures, they all boil down to understanding convergent and divergent series, discrete mathematics and combinatorics. To get to those fields one needs to have a good grasps of limits (ergo, Calc I). Similarly, every once in a while one has to make some form of probabilistic analysis at some point or another (ergo stats and Calc II).

    Knowing mathematics at the calculus level or above does not guarantee a person to be a good software developer. But not having good analytical skills almost guarantee the person will end up writing flat class hierarchies, architectures without layering, writing n-cartesian SQL queries, and loops that execute very expensive invariants.

    The error I've seen the most with developers with poor analytic skills is an inability to infer behavior from looking at code. That is, they are completely incapable of doing P->Q inferences. Worse still, they seem to have problems doing divide-and-conquer approaches. They cannot look at one piece of code, they have to look at the whole thing. When testing, they test the whole system in one single shot as opposed to testing and observing behavior of smaller pieces. In other words, they cannot handle complexity. They simply bang it - code it, compile it, run it, don't like the output, change it again, on and on until it prints the "right" thing (or things get hidden under the carpet.)

    YMMV, but that has been what I've seen since I started my career in software.

  62. Most likely redundant, but some definitions by MDillenbeck · · Score: 2

    If you are talking college, don't think of a 4 year Computer Science (CS) degree as anything to do with computers. Instead, think of it as a specialty field of mathematics that should have been called Computational Theory. True, you can learn about how to program your own compiler, make your own database engine, program your own operating system kernel, and other things related to computers - but there is going to be a lot of discrete math that requires calculus, and a lot of complexity theory and proofs to do also. So, yes, if you want a leg up get as much calculus out of the way and make sure you are taking a math course every semester to keep your skills sharp. (Trust me, I waited over 10 years before going back to college and even with "cramming" all the math in my brain before enrolling, I am far behind in my math skills.)

    Along with CS is Computer Engineering (CE), which is more of building hardware. Circuit design, pathways, and all that stuff one intro course made me not care to do - and a lot of optimization is done in that field. Of course, any engineering field is going to be math heavy, so no real change there either (and also master your calculus based physics).

    What you are probably looking for is a Software Engineering degree - which, as an engineering degree, will require mathematics also but focus more more on programming and software design.

    Note the trend? 4 year college means lots of mathematics no matter what - and if you aren't in an engineering school but in a college of letters and sciences, then be prepared to have a liberal arts education (read: basic biological studies, basic natural science studies, an ethnic study, literature courses, humanities courses, and social science courses that will be at least 1/6 of your total credit load... as a coworker of mine said "a lot of BS work that I will never use". I disagree with him, my most useful courses have been english composition, contemporary art courses (which gave me a new frame of reference to draw on), and my environmental studies courses. They introduce new ways of thinking... and CS is all about thinking of new and efficient ways to solve complex problems.

    The only way to avoid heavy mathematics (namely, at the calculus level and above) is to opt for a vocational/technical college. You know, 2 year degrees with titles like "Web Programmer" or "Database Administrator". Also, there are multiple fields to choose within the computer industry.

    Of course, I don't want to discourage the 4 year route. It is hard, but worth it... and if you find you like academia, there are graduate programs that will open up a whole new way of learning. Heck, UW-Madison has imitated Cornell and implemented a Games, Society, and Learning program... its serious business, but their lab consists of a PS3, X-box, 5 networked computers, a library of video games, and tons of obscure board games - and something like that is most likely where I will be once I complete my undergrad (if tuition doesn't skyrocket... so if you are going 4 years, my advice is do 2 year transfer at a 2 year college that is less expensive and has significantly smaller class sized... Chem I and II or Intro Calc Physics I and II is much better in a class of 40 than 300.)

  63. BSCS 1984, used Discrete Structures in 1985 by JRHodel · · Score: 2

    I went to college (for the 3rd time) at the age of 30. I had a hard time with Calc etc. and hated the first two semesters of Comp Sci, but got over that. I literally had to ask the Prof in 101 where the switch was on the machine.

    My first job was with a government tax department. One of their biggest problems was that small businesses kept changing their names trying to escape from last quarters' tax bill. I got assigned to write a routine to track business names - really to invent a way to track businesses changing their names. This led to designing an artificial key for a business, and assembling a list of all their names and date the changes.

    Then after some work I found that some of the businesses randomly changing their names would reuse a name eventually. Not smart if you're fleeing debt associated with that name, but what can I say? That created a closed loop that would circulate endlessly, or until a main frame operator got suspicious and stopped the job; or until I wrote code to escape a closed data loop.

    Making a really long story a little shorter, you will need math, and the skills learned working on math, no matter what kind of work you do, unless you are just a code monkey coding things with all the complexity designed by a systems analyst with 2 degrees in math.

    If that's all you want, to be a code monkey on a system you don't understand large parts of, then you don't need a degree in Computer Science. If you want to be any kind of scientist, or systems designer, like those who build gaming engines or rastor graphics programs, or tracking genetic variability in organisms being studied in labs in Research Triangle Park, NC; or at C-M University, in Pittsburgh; or Cal Tech where they just landed a curious robot on F'Ing MARS, then don't get a degree, don't study math, stay ignorant.

    That kind of work is actually going on everywhere now, not just these examples I pulled from my a**, I never left my home state to have a good career doing important work. I didn't use Calc every day, but I knew that I could if I needed to.

    "You can cure ignorance, but there is no cure for stupid."

    --
    Think of the Irony!