4 ms·
I studied so much discrete math in undergrad. Characteristic polynomials, rook polynomials, derangements, counting, recurrence relations, elementary number the
by mlthoughts2018 8y ago
I studied so much discrete math in undergrad.
Characteristic polynomials, rook polynomials, derangements, counting, recurrence relations, elementary number theory, elementary p-adic numbers, logic, geometric series, abstract algebra.
I have never needed any of it, and never faced a situation where knowledge or intuition in those topics helped me to think differently about a problem, never faced any type of computational complexity questions that I didn’t solve just by looking various things up as-needed.
The only thing discrete math did for me was help me boost my GRE math score to get into a good math grad program, where I switched to machine learning and MCMC topics.
Very occasionally you might encounter a simple permutation or combination counting argument in a paper or something, but it’s rare.
I enjoy discrete math, but really felt misled about it’s actual usefulness in almost any corporate software / research / engineering job.
If you don’t know this stuff but you can grok most basic counting arguments after looking a few things up on Wikipedia, you’ll be fine. Deeper command of these topics really doesn’t yield economic returns to your effort in almost all cases, unfortunately.
- noelwelsh 8y agoYou might see the value of knowing some abstract algebra in "Monoidify! Monoids as a Design Principle for Efficient MapReduce Algorithms" https://arxiv.org/abs/1304.7544 https://arxiv.org/abs/1304.7544 In general, if you can model a distributed or concurrent system in terms of a monoid (or better, a commutative monoid) you're onto a winner.
- fjsolwmv 8y agoSounds like you did a basic pure math curriculum (or minor) at a high-end school, which is probably 4 semesters of extra depth than a computer scientist needs, let alone a programmer. State school applied math / CS does not cover p-adics. Anyway, part of the value isn't in the material itself, but in the practice of learning hard novel ideas, not just the mechanical fundamentals that you could coast through because you are smart, but then hit a wall when you face hard problems later I life.
- bytematic 8y agoDo you think you are adequately able to judge how it has benefited yourself?
- mlthoughts2018 8y agoYes, especially having gone to math grad school and then working on applied problems in industry. Most of my peers have way less math training, many never took any discrete math. It would be incredibly foolish of me to presume that it someone makes me perform better or think better. In the spirit of a well-rounded college math education, sure, taking one or even two classes on this topic would be fine, for basic literacy. I’m only saying that it doesn’t come up as a needed skillset in applied math or computer scuence jobs. Virtually never. So to whatever extent people say it helps develop systems thinking, algorithmic thinking, complexity thinking, it’s just not true.
- 1stranger 8y agoIt's really helpful to hear this perspective. Can you suggest which topics have the most real world use?
- mlthoughts2018 8y agoLinear algebra, matrix computation and probability. Some signal processing. Some cryptography and computational complexity basics for a few data structures. Beyond that, I think it’s more important to learn how to solve problems generally and how to self-teach in order to pliably move into a topic you are less familiar with, grok the details sufficiently well to figure out a plan of attack, and figure things out well enough to know what to research or where / how to ask for help effectively. A good, well-rounded curriculum is worthwhile, whether in college or self-taught. But there’s no magic set of things that always cover an adequate basis of knowledge for everbody’s career. So learning how to adapt and learn is more beneficial in general. As far as economic returns go, I’d say first find a particular technology or problem area that is in demand, and begin working that way and using time, work projects, and other resources to expand your set of expertise from there.
- maga_2020 8y agothis experience could depend on the field of work you are in. Being fluent in statistics/linear algebra & discrete math/category theory -- makes you 'head and shoulders' above others, when it comes to assessing industry trends, and deciding if some are applicable to your work. Having those skills, does not mean, of course, that they would compensate for the lack of creativity, hard work, risk taking, constant year-after-year-self study, or inter-personal & presentation skills. Some examples: Being able to understand word-vectors and related techniques, for chat boats, or compliance -- is very helpful. Being able to reason about degrees of security of data published on 'immutable databases' or 'data streams' -- is useful, again in compliance (as in making records tamper-proof). Being able to design protocol/interaction across systems with context-free grammars -- is helpful, in protected against certain types of attacks. I would say this is reasonably relevant for systems that are exposed on public internet. Being able to read reasonably recent (or 20-30 year old) papers on Differential privacy/homomorphic encryption -- allows you to reason how effective your data protection strategy could be (again relevant for compliance). Obviously, understanding financial service models, performance models of distributed queuing systems -- require understanding of the maths I mention above. Being able to recognize where in your, even basic business workflow or database/state management -- there is an appropriate place to introduce finite-state-automate (to reduce number on 'unanticipated conditions') -- is also helpful. Being able to recognize database mapping through the lens of category theory, improves how you could design your data models (because right at the time of designing your data layout you are also thinking about transformations between them -- which is basic need for non-trivial business system integration). Opposite to the above post, I always feel that I need more math background that I have. And I would love to go back in time and significantly beef-up my education in that area.
- mlthoughts2018 8y agoMy work has spanned almost all of the different examples you listed, and I don’t believe my ability to work in those topics or understand them was aided or helped by studying discrete math at all. (Note: you lump linear algebra in to the discussion but it is dramatically different than what is typically called “discrete math.”) Additionally, many of my colleagues on machine learning and intense distributed scientific computing applications that I’ve worked on have had zero discrete math education or self-teaching. I am more effective at engineering in these applications than some of these people, and less effective than others. Prior exposure to discrete math seems to have no effect.