Slashdot Mirror


Which Math For Programmers?

An anonymous reader writes "It is no news that the greatest computer scientists and programmers are/were mathematicians. As a kid 'hacking' if-else programs, I was not aware of the importance of math in programming, but few years later, when I read Engines of Logic by Martin Davis I started becoming increasingly more convinced of this. Unfortunately, math doesn't return my love, and prefers me to struggle with it. Now, as the end of the semester approaches, I am faced with a dilemma: What math subject to choose next? I have two choices: 'Discreet structures with graph theory' (discrete math; proofs, sets, algorithms and graphs) on one side, and 'Selected math chapters' (math analysis; vectors, euclidean space, differentials) on the other. I'm scared of the second one because it's said to be harder. But contrary to my own opinion, one assistant told me that it would be more useful for a programmer compared to the first subject. Then again, he's not a programmer. That's why I turn to you for help, fellow slashdotters — any advice?"

8 of 466 comments (clear)

  1. Physicists? by jeffblevins · · Score: 5, Insightful

    I don't disagree that mathematicians make great software engineers, but I think most of the great software engineers in the past were physicists and electrical engineers.

    1. Re:Physicists? by COMON$ · · Score: 5, Insightful
      I know you are trolling but I call BS here (pun intended). I have a CS degree and am a Network Admin in an IT department. Now while I am not spending my time doing research (what you are referring to). I am using CS theories and applications every day. Tools are tools, whether I am using someones algorithm for optimizing data at a low level or high level either way I am doing data optimization. Given there are a LOT of IT folk out there, A LOT, that dont think of the profession properly. (See parent post, they may just not know that they are using high level math or may not be that good of an IT person) There are plenty of us CS grads who do. I have fun with numbers all the time, figuring out the rate of change in our systems over the last 5 years or calculating projected resource needs in 3 years.When I am looking for a solution to a problem I am not thinking vendors, I am thinking, what are my parameters and how do I fit them? I use my knowledge of big Oh for figuring out which methods to use for intrusion detection, or for designing routes on networks. I use my knowledge of numerical analysis to figure out how close is good enough when determining efficiency.

      We could go all day on this but tools are tools, objects are objects, it doesn't matter if they are arrays or VB scripts. Either way we are standing on someone else's shoulders and using computational analysis to find a solution to a given scenario. Do I really need to whip out the XKCD reference here?

      --
      CS: It is all sink or swim...oh and did I mention there are sharks in that water?
  2. The Second, If Not Both by eldavojohn · · Score: 5, Insightful

    It is no news that the greatest computer scientists and programmers are/were mathematicians.

    I caution you that there are many other science professions which require math to varying degrees. The above statement could also be true of phycisists, chemists and maybe even biologists. The vectors, proof and algorithms that math provides a foundation to (or is) can be compared to the statistics that a biologist relies on or more generally processing empirical data in any science. We teach our kids basic math so they understand home loans and taxation later in life. Similarly, your best x in any science related field will likely have strong math skills to take what gets thrown at them.

    I have two choices: 'Discreet structures with graph theory' (discrete math; proofs, sets, algorithms and graphs) on one side, and 'Selected math chapters' (math analysis; vectors, euclidean space, differentials) on the other. I'm scared of the second one because it's said to be harder. But contrary to my own opinion, one assistant told me that it would be more useful for a programmer compared to the first subject. Then again, he's not a programmer.

    But he's definitely correct. The second is going to give you practical skills in programming -- a wide array of practical skills. The first is most likely going to give you some automata theory for computers but unless you're going into theoretical research, the second is the obvious answer. Graphics and games are all vectors, the web is becoming even more so with new browser rendering technologies. Rendering is all euclidean space transposed onto a two dimensional plane (screen) using points (pixels). Differentials are huge in the vision and image processing world and again, in graphics. This is your obvious selection although I challenge you to take both. Also, look for courses on classes that blur the lines between stats/math and computer science. Like courses on error correcting codes or computer language design and theory.

    I don't know about you but I would rather take a seriously difficult course and learn a lot with a grade of C+ than take a seriously easy course and learn little with a grade of A+.

    Unfortunately, math doesn't return my love, and prefers me to struggle with it.

    As a brief aside, it's entirely possible you simply were never exposed to fun math or been exposed to a really influential teacher. It will not give you the joy that primary school math league gave me nor will it be a perfect substitute but Martin Gardner has some really fun math. While this won't get you excited about graph theory and linear equations, it might spark something in you to devour math regardless of how dry it is. Talking about quadratic sieves in regards to finding primes is really boring stuff when it's a paper full of symbols. But if you know what kind of power this holds in regards to cryptography, one can get really zealous about it. Remember to help your kids with this should you decide to procreate.

    Also if you haven't read Godel, Escher, Bach, it might be time. Copies of those sell for cheap used online.

    --
    My work here is dung.
    1. Re:The Second, If Not Both by VAXcat · · Score: 5, Insightful

      I took years and years of vector & euclidean math, differential euqations and the like. Mow after working as a programmer for a very long time, I've used data structures, graphs, algorithms and the like on a daily basis. I've used the other, "Buck Rogers" math...once. I realize this is anecdotal, but I can't see how most programmers would have more use for the advanced analysis style math over the discrete stuff. Gradients, divergences, curls, triple integrals and partial differential equations are a lot of fun, but they just don't come up that often unless you're a physicist or a games developer.

      --
      There is no God, and Dirac is his prophet.
    2. Re:The Second, If Not Both by samkass · · Score: 5, Insightful

      If you're going to choose and not do both, then it largely depends on what kind of "programming" you're going to do. Note that "Programming" is a very different profession from Computer Science or Software Engineering. If you're interested in 3D, games, physics, etc., you're going to need a solid foundation in linear algebra and calculus. If you're going to be dealing in large datasets, distributed systems, client-server communications, etc., then discrete math and set theory will probably be very useful. If you're going to go into AI, classifiers, robotics, etc., then you'll probably want both, plus statistics.

      If you're just going to bang out code to someone else's careful spec, then you may not need all that much math.

      --
      E pluribus unum
    3. Re:The Second, If Not Both by Bakkster · · Score: 5, Insightful

      Agreed. Discrete math is vital groundwork for a lot of what is expected from a programmer, while the second course seems more focused but less generally applicable. Basically, if you take discrete you will learn how to find your own solutions to an array of problems through logic, set theory, combinatorics, and algorithms; while the second course will basically teach you a few concepts used in 3D graphics and physics modeling. Unless you absolutely know you want to work in a field that would heavily use the second course, take discrete. However, even if you take the 'selected chapters' course, I think you would have difficulties doing much useful with vector math or calculus without knowing discrete math to turn it into an effective and efficient algorithm.

      To be truly successful, though, you should take both, even if you take one pass/fail or not for credit. The information is just too important not to have.

      --
      Write your representatives! Repeal the 2nd Law of Thermodynamics!
  3. Set Theory / Boolean Logic by Gothmolly · · Score: 5, Insightful

    Venn Diagrams. Intersection. Union. AND/OR/NAND/NOR

    I constantly run into people screwing stuff up because they get lost in the logic of stuff like "if this is part of that group but not contained in this set".

    --
    I want to delete my account but Slashdot doesn't allow it.
  4. Re:Study what you enjoy by TheRaven64 · · Score: 5, Insightful

    If you want to do human computer interface, you don't need math (or a brain).

    Absolutely untrue. You need statistics, graph theory, game theory, and a little calculus. At an absolute minimum.

    Attitudes like yours are why so many user interfaces are terrible.

    --
    I am TheRaven on Soylent News