Slashdot Mirror


Ask Slashdot: How Important Is Advanced Math In a CS Degree?

AvailableNickname writes "I am currently pursuing a bachelor's in CompSci and I just spent three hours working on a few differential equations for homework. It is very frustrating because I just don't grok advanced math. I can sort of understand a little bit, but I really don't grok anything beyond long division. But I love computers, and am very good at them. However, nobody in the workforce is even going to glance at my direction without a BSc. And to punish me for going into a field originally developed by mathematicians I need to learn all this crap. If I had understood what I was doing, maybe I wouldn't mind so much. But the double frustration of not understanding it and not understanding why the heck I need to do it is too much. So, how important is it?"

30 of 656 comments (clear)

  1. depends on what you're going into by davecotter · · Score: 4, Insightful

    if you're going into app development or IT, probably not much math needed. i've been in app dev for a long time (and quite successful). Those times that i actually need math? I just look it up, program it, then forget it. I never have needed much math. However, if you're going into some CS field that requires math, well, obviously, it's worth your while to study it.

    1. Re:depends on what you're going into by Cryacin · · Score: 5, Insightful

      If you're doing quants work, or business intelligence, data mining etc, sure. Hardcore math is a must. If you're developing business software or something like that, it's more important to know Djikstra, the gang of four and closures.

      --
      Science advances one funeral at a time- Max Planck
    2. Re:depends on what you're going into by JBMcB · · Score: 5, Informative

      If you're developing business software you're going to need stats. It's inevitably going to rear it's ugly head sooner or later.

      --
      My Other Computer Is A Data General Nova III.
    3. Re:depends on what you're going into by geekmux · · Score: 4, Insightful

      if you're going into app development or IT, probably not much math needed. i've been in app dev for a long time (and quite successful). Those times that i actually need math? I just look it up, program it, then forget it. I never have needed much math. However, if you're going into some CS field that requires math, well, obviously, it's worth your while to study it.

      I think that was the point of the query here, exactly what fields remain today that require the level of math that is (rather arcanely) still infused within a CS degree?

      I fell into this same trap when initially pursuing my degree. Avoiding all the advance math requirements due to my own hatred of it, I was facing three separate tracks of nothing but I/II/III math courses, which were obviously best taken in succession. It was going to take me way too long to accomplish this (while going stir-crazy on nothing but math), so I ended up switching to the MIS path, which didn't have the absurd math requirement.

    4. Re:depends on what you're going into by Hatta · · Score: 5, Insightful

      If you're not going to need much math, you proabably don't need a CS degree either.

      --
      Give me Classic Slashdot or give me death!
    5. Re:depends on what you're going into by FilmedInNoir · · Score: 5, Informative

      Advanced calculus/linear algebra is a must for game engine development. I try to read articles about rotating 3D objects.... *WHOOSH* over my head. But I've done well for 13 years doing IT client/server programming and just looking up the occasional algorithm for lat/long distance calculations, permutations, etc. Still need to be able to translate math formulae into a computer language though.

      --
      Sig. Sig. Sputnik
    6. Re:depends on what you're going into by internerdj · · Score: 4, Insightful

      If you are going to go further in your education then you will need to learn all that math too. I've spent a sizable chunk of grad school reviewing math because I didn't take it serious during my undergrad. Solid statistics is used in countless places. Linear algebra is key to understanding computer graphics and has powerful tools for other more specialized applications. Differential equations are used for all sorts of real world simulation problems. If your university is like mine then you will get an in depth discrete math course from the math department that covers the problems you hit when using a discrete machine to try to work with infinite things. You might get that from the CS department but our CS coverage was all sorts of CS related math. If you do anything hard then the CS coverage may not cut it.

    7. Re:depends on what you're going into by Anonymous Coward · · Score: 5, Informative

      Differential equations - control theory and anything that brings you in contact with engineers (or if you want to work in finance)
      Linear algebra - signal processing, computer graphics (don't even think about doing computer graphics without knowing linear algebra)
      Logic - system modeling and software verification, and basically everything else
      Calculus, discrete mathematics - high performance computing, simulation, communication, anything that brings you in contact with physicists

    8. Re:depends on what you're going into by elfprince13 · · Score: 4, Insightful

      Also, if you're doing any serious work in algorithms, a strong understanding of proof techniques and discrete math is a must.

    9. Re:depends on what you're going into by thomasw_lrd · · Score: 4, Funny

      Almost all of Linear Algebra can be learned in a day, if you're willing to apply yourself. At least that's how my Linear Algebra was, but then again, the Prof said it was pretty dumbed down. So go figure what I know.

    10. Re:depends on what you're going into by NReitzel · · Score: 5, Insightful

      The bottom line is very simple. If you have the math - and I'm talking diffeq and applied mechanics and dynamics - you will get jobs that others cannot. And strangely enough, those jobs pay very, very well.

      Just like everyone else says, if you're content being a web programmer at a medium--to-ok salary, then forget the math.

      If you want a job writing control code for F22's, at a salary that can make your head spin, then consider the math as supremely important.

      --

      Don't take life too seriously; it isn't permanent.

    11. Re:depends on what you're going into by drstevep · · Score: 5, Insightful

      Bullshit. You want to develop game engines, you have to know how to move things around. You have to know how to create a world. You have to understand what your team is doing, and understand it at a gut level. This isn't rendering, this is creating a world.

      So learn your math well. It will give you an additional layer of depth that will differentiate you from those who don't.

      Disclaimer: I just coded up some low-precision trig operations. I'm generating some simulated waves in the world I'm creating. Costing hundreds of trig calls per frame, and figure 50 frames per second... My routines are around 3 to 5 times faster than system calls, you want to look up that hundreds per frame at 50 fps again? It means I have a lot more CPU available for other tasks. Math. Taylor series. Error analysis. Makes me the person that gets hired instead of the one that gets passed over.

    12. Re:depends on what you're going into by Bob+the+Super+Hamste · · Score: 4, Informative

      Too true. I just finished working 5 hours on a proof with another guy in the office to show that something had complete coverage of the state space, will always produce the correct output for all inputs. Now it is time to code once I finish my lunch. Granted some of that time was spent simplifying the final solution. I use higher math almost every day, granted it ins't diffeq, but I often use linear algebra, boolean algebra, discrete math, and proofs (the non shapes part of geometry). I don't use calculus or stats in my current line of work but in my previous job stats was a big part of it writing insurance code.

      --
      Time to offend someone
    13. Re:depends on what you're going into by fahrbot-bot · · Score: 5, Insightful

      Even when doing graphics programming most of the fancy math is already handled through frameworks. You don't actually need to know how to do vector calculations...

      Unless you want to actually work *on* those frameworks... Someone has to develop/maintain the tools the rest of us simply use.

      --
      It must have been something you assimilated. . . .
    14. Re:depends on what you're going into by VortexCortex · · Score: 4, Insightful

      Game Engine development has nothing to do with Mathematics.

      I'm just going to call you out on this complete and utter bullshit statement. Tell me, how do you best classify assets that exist in three intersecting sets: stored on disk, loaded in memory, and available for rendering (in the GPU)? Keep in mind we would like to minimize cache misses. Even a moderately heavy statistics / logistics calculation in the asset manager is beneficial if it reduces the occurrence of expensive cache misses slightly. Furthermore you pigeon hole ENGINE DEVELOPMENT by saying its not about all those other things that it actually is about. For instance, I wrote my own PKI encryption library so that modders can sign their game mods and I can sign our game updates, and everyone can use decentralized distribution while players can trust the source. That doesn't come bundled in a box with a bow, neither does tweaking the sound or image / video compression algorithms to be less generalized and more targeted to the content you're delivering. FFT's and frequency domains aren't rocket science. Physics IS Mathematics, allowed error bars and instability propagation limiting, the whole damn thing, it all benefits from some higher mathematics -- It's not "just programming". Parallelism is CORE to engine design. Where to draw the lines and segment the engine matters A LOT, and you can use mathematics to inform the decision instead of just wasting time guessing and checking, like a blind person in an orgy.

      "No, Advanced Mathematics is not required," bullshit. First off: Define "Advanced". Secondly, CS is not just Programming. Third, learning a bit of higher math is really useful and actually not hard to grasp, especially if you have a game engine to work with -- The most advanced graphing calculator in the world: You can make visual graphs that plot equations and react to the inputs real time. That really helped me teach myself this stuff. Want to combat power creep or balance your enemy / weapon strengths? Ensure your platformer difficulty follows pacing well? Guess what? Break out the statistics, buddy. Even that high level "game designing" -- most removed from the engine development -- benefits from mathematics. Getting past the disconnect between the cryptic symbolics of mathematics and being able to convert them into the more verbose and simple source code is a skill worth an infinite amount its weight in gold. If you can't do that, then hit the books. Once you can do that, then the scales will fall from your eyes and the gameworld will truly become your playground.

    15. Re: depends on what you're going into by ClickOnThis · · Score: 4, Insightful

      Mod parent up. This whole discussion has a distorted notion of what constitutes "advanced math" in the context of an undergraduate degree in a scientific discipline. I would classify advanced math as anything taken at the junior/senior level, i.e., in third or fourth years. And yes, that might include such topics as topology and Hilbert spaces.

      Freshman and sophomore math that includes differential equations, linear algebra, statistics and introductory discrete math (combinatorics, etc.) just comes with the territory of a comp sci degree. It's not advanced math, it's the price of admission into a scientific or engineering discipline. Suck it up.

      --
      If it weren't for deadlines, nothing would be late.
  2. well by Anonymous Coward · · Score: 5, Funny

    If a few differential equations are giving you so much trouble, you can stop worrying about learning advanced math. ;)

  3. Think About It This Way by eldavojohn · · Score: 5, Insightful
    The verdict is: it's important.

    I have two resumes in front of me. I need someone who can write some fairly complicated software. Are they writing the kernel to an operating system? No. But they'll be making complexity decisions between a server and a client. Not exactly new or novel but important to me and my clients.

    So I look at one resume and the guy has suffered through integration by parts, linear algebra, differential equations and maybe even abstract algebra. The other guy went to a programming trade school where those are not taught. The trade school likely taught inheritance, pointers, typecasting, and all that good stuff just like the Bachelor's of Science degree would.

    Now do my solutions need integration by parts, linear algebra and differential equations? Absolutely not. But if I'm going to pick between the two, I'm going to take the applicant that solved more difficult problems in order to make it to a class. Few people actually care about those concepts deep in their hearts -- and I'm sure neither of my prospective employees did. But in that same vein, no rational developer is going to care at all that my client likes to be able to drag and drop files instead of doing file navigation to find the files he wants. But I want the applicant who's going to do the inane stuff that he doesn't personally view as important.

    Challenge yourself. Take the math courses. Take the logic courses. Take the statistics and combinatorics courses. Take the finite automata courses. Prove to yourself that there are no obstacles in your way. They are a great expense of time now but they are a huge investment in yourself -- no matter how pointless they appear to you.

    If I had understood what I was doing, maybe I wouldn't mind so much.

    You should attack this problem two different ways: 1) increase the amount of time you allot to your own personal enrichment in these topics/courses (three hours is very little time if you are approaching new concepts in math) and 2) seek outside instruction as it's also possible you have a professor who doesn't understand what they're doing either (the teaching, not the subject matter).

    --
    My work here is dung.
    1. Re:Think About It This Way by Assmasher · · Score: 4, Interesting

      While I understand your point, it also has weaknesses.

      I worked with a guy who was a math guru - and he was an absolute sh** software engineer. Oh, he could program some - give him a very finite problem to solve and he could solve it very functionally; however, when it came to actual software *engineering* he was an total loss.

      Normally we'd replace a guy like that, but like I said, he was great with numbers - so we gave him a sandbox to play in. He never ever, ever, checked in code into our system. He'd finish something and turn it over to another engineer who'd refactor it and check it in.

      He was a hell of a nice guy too, but being smart has nothing to do with being a good software engineer (although it surely makes it easier.)

      --
      Loading...
  4. You have more problems than you think by Anonymous Coward · · Score: 5, Insightful

    If you think advanced math is "anything beyond long division", you are probably going to be in trouble.

  5. Oh dear by spongman · · Score: 5, Funny

    "Good at computers" ?

    you should put that on your résumé.

    1. Re:Oh dear by mblase · · Score: 5, Insightful

      "Good at computers" ?

      you should put that on your résumé.

      That was about my reaction.

      Long bio short: I was *great* in math in high school, pretty good at calculus, but differential equations and their non-algorithmic problem solving methods just confused the heck out of me. (In hindsight, I should have asked my teachers for more help.) At the end of my freshman year I was introduced to NCSA Mosaic and then Netscape 0.9, started teaching myself HTML and, later, JavaScript, and got a job coding web sites. I still do that.

      I took to programming so well, I wished I'd tried it sooner. Turns out that programs and math proofs use the same sort of abstract logic -- get from point A to point B using these pieces.

      I always liked computers, but I don't suppose I'd describe myself as "good with computers." That means USING software, not WRITING it. Writing software requires judicious applications of logic and optimization, with varying levels of analysis and computation sprinkled in.

      And the further you get in programming, the more advanced math you need. Graphics? Uses trigonometry. Animation? Matrix algebra. You probably won't need calculus or differential equations unless you're actually doing engineering, but how do you know at this point that you won't?

      Heck, my state university wouldn't even let me get a CompSci minor without passing a class in circuit design, and you'd better believe I needed to know algebra when designing a binary multiplier.

      My point is this: computer science IS math, just with a different vocabulary. Being a CS major because you're "good with computers" is like being an auto mechanic because you're "good at driving".

      Math isn't about numbers, it's about logic and problem solving, and computer science is even more so. If you can't even find something to enjoy about simple algebra, then with all due respect, you're in the wrong field.

  6. Differential equations is not advanced math. by Garridan · · Score: 5, Insightful

    Mathematician here. You're learning differential equations to prepare you for lifetime of abstraction, to sharpen your skills in symbolic manipulation. Those differential equations probably won't really enter into the game... but who knows, you might end up doing game physics which is nothing but a massive differential equation solver.

    But I'm here to tell you that differential equations are not advanced math. Take a discrete math class to get a taste of what 'real' math is for a programmer. Take data structures. You'll find yourself doing formal proofs (real math), and it will be extremely applicable to the rest of your programming career. That DE class is there just to make sure you can manipulate symbols.

  7. Logic and love of computers is key by bhlowe · · Score: 4, Insightful

    If you enjoy programming and computers, don't let poor math skills stop you from doing what you like. I sucked at calculus and do very well as a programmer. Logic is the more important skill.

  8. Advice from a math hater by SWGuy · · Score: 5, Interesting

    I hated math in university, I still hate it now, but over a 25 year programming career math has turned out to be the single most surprisingly useful thing I learned in university. Calculus, statistics, trig, I have needed them all in my programming work. I wouldn't have the cool job I have now if I couldn't do the math.

  9. Really, who cares? by waddgodd · · Score: 4, Insightful

    This is an exemplar of a phenomenon that I'm really beginning to despise in higher ed, the "do I NEED this?" phenomenon. Frankly, you don't NEED any given class to do most jobs out there. To be precise, your College diploma will not prepare you in the slightest for any of the multitude of skills you actually need in the job market nor is it designed to do so.. It is designed to prove you have the flexibility and desire to learn anything that comes across your plate. Picking and choosing what's actually relevant to your presumed career path is doing the exact opposite of this. How it impacts ME in a way that makes me despise it is that this trend is also transparent to College Professors, who now have no time to actually teach those that want to learn because they spend most of the semester fielding questions like "how will I use this as a McDonald's Fry Cook (or whatever the student laughably thinks they'll be employed as after graduation)" so they can't answer the basic "where can I find out more about this fascinating bit", leading to students like me getting so frustrated at the crap that they just give up on lectures. My honest advice to you is "if you don't think it's relevant to your interests, don't take it and petition the requirement off, you'll save a lot of people a lot of hassle that way"

    --
    Just because you're paranoid doesn't mean they aren't out to get you
  10. maybe yes maybe no by OldSoldier · · Score: 4, Insightful

    First, I agree 100% with everyone who says "yes" I agree 'even more' (math joke there) with those who suggest a different computer degree where math is emphasized less. However, let me paint an oddly two-sided picture with 2 different stories.

    I have a masters in math. In class one day our professor mentioned that he consulted for the forestry (or some such) department at the school. They were trying to calculate the area of an arbitrary region so as to estimate the number of trees within that area. Problem is the area may be convex or concave. The CS department at this school was trying to solve the problem by triangling the polygon, but ran into difficulties if the area was concave. My professor suggested using Green's theorem. Moral??? On the one hand advanced math gave a much more elegant solution to this problem, on the other hand **the CS department** at this school wasn't advanced enough to suggest it on their own... so if THEY can't do it... (fill in the blank).

    Many years later I was managing a small group of contractors on a project (I was also designer for this project) and I casually mentioned during a design meeting that we could calculate the score we needed by doing a weighted average of the various datapoints we already had. One developer mentioned outright that he would need me to write up the weighted average routine in psuedocode and I suspect the other developer felt the same way but was less forthcoming about his ignorance. Floored but already stuck with these guys, but then again... they're contractors and I believe they've been able to keep themselves employed since.

    At the end of the day, I'm one of those who thinks math and computer science is like solving puzzles... I would rather hire someone who likes solving all kinds of puzzles than one who has an admitted weakness in some (but perhaps not all) puzzles. If you indeed hate math that much I think you need to do some soul searching and figure out what sub-field of CS would be best suited to you. If you go into a field that requires math and you suck at it you'll probably be eclipsed by others more adept at it. On the other hand a lot of people who like math and CS are quite content to end their careers there... so if you have a growth plan that gets you out of CS work within a few years of graduating...

  11. Go back and learn the basics by Guru80 · · Score: 4, Insightful

    Firstly, it's very important. You will be kicking yourself in the ass for the next 10 years when you have to keep going back to figure out all this "crap you will never need" that you just so happen to need every month.

    Your problem seems to stem from a lack of understanding the basics according to your summary. Go back and really study them until you understand tehm; it will make life so much easier and it won't take long. Everyone these days are "good with computers" and if that is your selling point you can get hired for helpdesk support at minimum wage right now. If you want to be involved in any of the advanced CompSci areas though those fundamentals (advanced math is one of many) are absolutely necessary. The first time you can't figure out a simple algorithm because you don't understand the math behind it just stand up, shake the interviewers hand and go home, you already don't have the job.

  12. CS Departments do a poor job at this.... by Fallen+Kell · · Score: 4, Insightful

    This is one area where I feel most CS departments do a very poor job explaining why this math is important. Too many seem to simply teach the math, but not WHY they are teaching the math. They do not show practical reasons for the the math, it is more simply taught as "Well this is the math. You need to know it because you need to know math".

    This is one of the reasons why I loved the way I learned these more advanced math classes. I was initially an Electrical and Computer Engineering major. Our Freshman and Sophomore curriculum was already per-designed before we even started. There were exactly zero changes you could make to it (unless you failed a course). We had calculus, physics, chemistry, biology, (and a few engineering classes, which were essentially introductions to engineering design, debugging/measuring instrumentation like oscilloscopes, multimeters, etc., basic circuit design, and practical implementation). But, all the classes were directly integrated. Meaning that at 9am when you had your calculus class which taught you differential equations, at 10:30am in your physics class you were then using the techniques that you learned in calculus to solve real world problems. The same with the chemistry and biology. Every professor knew exactly what was being covered in the other classes, so they knew exactly when they would use that material in a practical matter in their own course. We were using calculus to derive velocity vectors of moving objects, tangential line equations, and 3 dimensional transforms, the day we learned how to use the advanced math. So we were seeing the practical reason for the math and why it was relevant in the same day that we learned it.

    For a lot of programmers, you may not need to use those techniques, especially if you are simply writing social applications, or word processors. But if you are modeling 3 or 4 dimensional objects, simulating physics, creating a game engine, writing graphical engines like photoshop/GIMP, all this advanced calculus, differential equations, and matrix operations are very relevant.

    --
    We were all warned a long time ago that MS products sucked, remember the Magic 8 Ball said, "Outlook not so good"
  13. Beauty of Math; Beauty of Computer Science by Cliff+Stoll · · Score: 4, Interesting

    I work in computing; a meter away is a mathematician.

    He knows real math: group theory, complex analysis, Lie algebras, topology, and, yes, differential equations. To him, math isn't about numbers ... it's about rigor, elegance, and beauty.

    No surprise that his code is rigorous, elegant, and beautiful. When he showed me how to use Cheetah to build templates in Python, he explained things with an clarity and parsimony. In his world, clumsy coding is as bad as a clunky math; a clear mathematical proof is as fascinating as a tightly written function.

    This man is the go-to guy for the 100 person business. Soft spoken and never argumentative, his advice and opinions carry weight. I'm honored to work alongside him; not a week goes by that I don't learn from him.