8 ms·
Ask HN: Which areas of math are practical to programming/algorithms and why?
- ivan_ah 10y agoDiscrete math first comes to mind first: lists, trees, graphs, etc. Used in basic algorithms 101, but you need some more serious probability theory for probabilistic algorithms. Linear algebra is useful for computer graphics, but also for general "system thinking" concepts like inputs spaces, output spaces, transformations, and properties of transformations. Basic differential calculus, meeeh, but multivariable calculus—specifically optimization—is really important in many programming contexts (e.g. machine learning). Of course, the most important and most basic of all is the notion of a function f(x), its definition, inputs, outputs, properties, etc.
- pirocks 10y agoAlso related to functions: big-O notation.
- ivan_ah 10y agoRather than thinking just of how math ideas are used in CS, we should think of the relation as a two-way street: computing can help us better understand math too. Here is a short tutorial on basic math for programmers: https://minireference.com/static/tutorials/sympy_tutorial.pdf https://minireference.com/static/tutorials/sympy_tutorial.pd... It serves to review basic high school math, calculus, and even a bit of linear algebra. SymPy is very powerful stuff...
- anchpop 10y agoMatrix multiplication is a must-have for any graphics programming and knowledge of them is very useful for learning neural networks. And on the more esoteric side of things, in Quantum Computing every logic gate is actually a Matrix Multiplication
- deleted 10y ago[deleted]
- acconrad 10y agoSomeone asked this a few months ago and the book that was referred was Concrete Mathematics by Knuth (https://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025 https://www.amazon.com/Concrete-Mathematics-Foundation-Compu...) which I have since purchased and have enjoyed re-learning from college. Highly recommended, and should cover all you need to know. Very approachable text.
- planteen 10y agoLots of areas are important. Every job I have worked has had a specific math specializations that were important. Reed-Solomon codes are used in storage and communication systems. They make use of abstract algebra (finite/Galois fields). Linear systems theory is essential for signal processing and control systems. Quaternions are important in aerospace and graphics.
- MaysonL 10y agoAbout 40 years ago the company I was working for bought a big videotape recorder, and procured a custom controller for it to use it as a large random access storage device. The controller used a large Reed-Solomon code to detect and correct fairly large multi-bit errors. It worked quite well, storing images for Boeing, Lockheed, and McDonnel-Douglas aircraft maintenance manuals.
- hartror 10y agoOperations research is 50/50 compsci and maths. Lots of interesting hard problems that require good maths and compsci skills. We employ some very talented people working on these sorts of problems for rail: http://biarrirail.com http://biarrirail.com
- deleted 10y ago[deleted]
- dschiptsov 10y agoBasic algebra for the substitution model and basic calculus for high order functions and the notion of a transformation in general. Set theory is, probably, the most fundamental. Everything could be defined as a set or as a function. Lambda calculus, obviously. Some combinators. Basics of linear algebra. No category theory and other bullshit is needed. Sets will do. It is actually very important skill to avoid wasting time in disconnected from reality obscure academic bullshit, be it philosophy, physics or math. Do not follow other people's hallucinations. Have your own.) As a rule of thumb - you need just enough math to understand The Wizards Lectures and SICP. Again, the substitution model, sets (for notion of types and basic collecttions) and high order functions (the "domain and range" mantra) is enough. For algorithms the notion of being bound by some function and orders of growth.
- aaachilless 10y agoWhat's "The Wizards Lectures"?
- dschiptsov 10y agoThe set of video lectures from 1986 by Abelson and Sussman. https://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ https://groups.csail.mit.edu/mac/classes/6.001/abelson-sussm... Timeless classic. And nostalgic diving back into 80s. And MIT Scheme on a monochrome monitor with a clicky keyboard.
- tetrep 10y agoNot to start a math war, but why is set theory okay but category theory bullshit? While they're both useful, I think category theory encompasses a bit more than set theory and it's only a little more abstract. I also like the more functional approach that a lot of category theory requires you to take; if you're used to imperative programming it's a pretty different and useful way to think about things and it's great for adding to your critical thinking/general problem solving skills.
- dschiptsov 10y ago
- adamnemecek 10y agoI've been recently trying to make my way though Elements of Programming (https://www.amazon.com/Elements-Programming-Alexander-Stepanov/dp/032163537X https://www.amazon.com/Elements-Programming-Alexander-Stepan...) by Alexander Stepanov and Paul McJones and it makes me say abstract algebra. It's the first and only rigorous foundation of software engineering that I've seen. It basically maps abstract algebra to this somewhat simple subset of C++, introduces new algebraic objects (such as memory) and then shows this really nice correspondence between the the C++-- and the abstract algebra. If you are not familiar with the author, Alexander Stepanov is the guy who basically figured out generic programming, was instrumental in the design of C++ templates and the C++ STL. C++ gets a lot of flak but templates are very powerful (if you disregard the complexity). I think that they are actually one of the main reasons why C++ is still relevant. Also I'm starting to think that generic programming might actually be the most powerful paradigm out there (this is just a hunch). This book doesn't take the middle road, only the low level (C++) and extreme high level (abstract algebra) and totally cuts out the middle part (aka boiler plate). Funnily enough, this C++-like language actually translates very nicely to the modern C++ successors like Swift and Rust (or it seems, I'm in the progress of exploring this). Has anyone here tried to explore the contents of this book in either Swift or Rust? But remember that this is not an easy book, I've met very smart people who told me they read only a part of this and are still wrapping their heads around that.
- eggy 10y agoI just picked this up after having finished 'From Mathematics to Generic Programming' which is a ride in the park compared to what you're reading now. Looking forward to the task of slowly working my way through it. [Edit] Interested in Rust for the same reason, but I'm not attracted to Swift. It looks so much like Kotlin, I am not sure I understand the fuss over it other than it gives Apple devs a way out of ObjC. Anyway, I am going full on Android now, not in the hopes of app money, but the sheer numbers of devices out there, Google's backing, and it is more of a hacker's platform than iOS. I will most likely try Kotlin again, and this will prepare me for any possible switch to Swift.
- cableshaft 10y ago
- blt 10y agoIt is very likely that the most important new algorithms in the next few decades will involve probability theory.
- tnecniv 10y agoIt really depends on your domain. Knowing more math is never a bad thing. It provides you tools for you to model and solve problems. That said, two areas that I felt most broadened my horizons are probability and linear algebra. They are pretty ubiquitous topics that come up regularly in more sophisticated and exotic algorithms.
- sudo_bangbang 10y agoMathematical logic for playing around with conditionals, Principle of counting for understanding complexity
- e19293001 10y agoFormal languages[0]. Well, if you want to learn about compilers and programming languages. [0] - https://en.wikipedia.org/wiki/Formal_language https://en.wikipedia.org/wiki/Formal_language
- GFK_of_xmaspast 10y agoBetter question: what areas aren't?
- chubot 10y agoGood question... Calculus? Of course it has a long history with computing, but I would say that probably less than 10% of programmers outside scientific fields use any calculus. There is calculus in machine learning but I think that counts as less than 10% of programmers, and it will probably become its own specialty separate from programming in the coming decades (to some extent it is already) From what I know of topology, you use logic and algebra as tools to learn about it, just as you use logic and algebra in computing. But you probably wouldn't use topology to say anything about computing. Number theory is relevant to crypto, but I would be hard pressed to say it is practical for programmers in general. You could probably have a pretty long and successful career in programming without knowing basic things like what a prime factorization is.
- santaclaus 10y ago> Good question... Calculus? Of course it has a long history with computing, but I would say that probably less than 10% of programmers outside scientific fields use any calculus. Calculus is pretty useful in computer graphics and vision, if you want to understand what is going on there are integrals left and right. Audio processing and finance too.
- blt 10y agoTopology is useful in robotics and control to define the set of achievable states in a system and their connectivity.
- chubot 10y agoOn further reflection, it does seem pretty hard to find a subfield of math which isn't relevant to SOME subfield of computing. I was going to say non-Euclidean geometry, but that's very relevant if you're doing mapping software. But that's a different thing than saying that a particular subfield of math is "practical to programmers". I would say that programmers need the foundations of logic, algebra, and probability, and a bit of calculus (less than I was taught). And THEN they can learn topology, number theory, non-Euclidean geometry or advanced calculus if they need to, for their specific domain. You never know what you're going to end up doing 10 years down the road. And of course that seems to be what happens in a good undergrad CS education, so apparently people better than us have thought about it :) Indeed college is supposed to give you the ability to learn how to learn, when new things come up, as they always do in programming. Quantum computing is basically a ton of linear algebra as far as I can tell.
- empath75 10y agoCategory theory.
- mgraczyk 10y agoMath is rarely necessary for software development. However, math is one way great engineers distinguish themselves from okay engineers. I work primarily on audio software. Linear algebra is most important, followed closely by signal processing. Those are sufficient to write good software. Great software requires statistics, calculus (mostly for optimization but also modeling), and discrete math (again mostly for optimization). Other specialties probably require more discrete math and less linear algebra and signal processing.
- TeMPOraL 10y ago> Math is rarely necessary for software development. However, math is one way great engineers distinguish themselves from okay engineers. I recently realized that math is not necessary for programming... if you want to be stuck doing boring stuff like webdev or CRUD apps.
- seanmcdirmid 10y agoAbstract reasoning is necessary for programming. We typically develop those skills doing and applying math, but it is an open question if abstract reasoning is math. Also, there are many kind of maths, the Europeans even get this right over the Americans by making it plural. Math is necessary is like saying things are necessary...which thing? It really depends on what you are doing, and experience with a known field of math might not be useful for some problems (beyond the abstract reasoning you need to write code at all).
- sp527 10y agoApplies also to mobile, DevOps, and data engineering. Take the average ~$150K SV software engineering job and you don't need continuous math (just discrete to get in the door and maybe once every 6-12 months after that, when an interesting problem arises like some kind of divine salvation).
- segmondy 10y agoPeople that don't know math just reinvent it poorly. A lot of people use databases, and their SQL query with joins is performing set operations and they have no idea it's math. If You gave them the same dataset in an array, they wouldn't use a Set collection to solve it, but would loop over the dataset multiple times plucking what they need.
- kyled 10y agoCategory theory! It's cool to learn recognize how simpler math concepts apply to computing. Ie, associativity allows for map/reduce
- marknadal 10y agoSurprised nobody has mentioned any/all of Alan Turing's work, it is the mathematics which caused the foundation of Computer Science. See Turing Completeness and Universal Turing Machines. Graph Theory is important for understanding data structures, I would also stress that the math equivalence of idempotency and isomorphism. We use these concepts a LOT in our work - but admittedly, we're a database ( http://gun.js.org/ http://gun.js.org/ ), which is a very different line of work than building consumer apps. Other people already mentioned Big-O notation. Combinatorics, etc.
- JabavuAdams 10y agoLinear algebra for computer graphics, computer games, machine learning, and engineering simulation.
- YZF 10y agoI'd recommend reading Knuth's The Art of Computer Programming for his perspective. Very math intensive and things you won't find in other textbooks. Definitely a lot of discrete math (e.g. combinatorics), some calculus, number theory (esp. for cryptography), coding theory (e.g. for error correction), information theory, computational complexity theory. The border between theoretical computer science and math in general is very blurry, pretty much anything that is CS pretty quickly touches on more "traditional" mathematics. A lot depends on your area of programming, things like machine learning will definitely involve more linear algebra, calculus, statistics. If you're programming a 3d engine then again algebra, geometry, etc. Things like finite state machines have a mathematical underpinning. EDIT: From what I've seen at a university level CS program, Calculus, Linear Algebra, Discrete Math, Group Theory, Logic and Statistics were (IIRC) the core required math courses. Doesn't mean everything you learn there is applicable to any kind of program you might write but at least that's what someone thought was important...
- jwdunne 10y agoImportant to note that the maths used in AOCP is briefly covered at the start of Vol I. This was expanded upon in the form of Concrete Mathematics. If you want just the maths and at a slightly slower pace, go with Concrete Mathematics. If that's a struggle, I found the first part of Discrete Mathematics and its applications by Kenneth Rosen was enough for me to make progress in Concrete Mathematics. I also found learning a bit of linear algebra and calculus was a mind changer. I expect more fruits by my continuing of those studies.
- nekopa 10y agoThis seems like a good read on the topic: http://steve-yegge.blogspot.cz/2006/03/math-for-programmers.html http://steve-yegge.blogspot.cz/2006/03/math-for-programmers.... Disclaimer: I know nothing about math but have been researching it recently as I want to go to university next year to study CS so I have about 8 months to 'learn' math (45 year old street programmer here :). I would appreciate any feedback on if this post has any merit, and will be following this thread as it's relevant to my interests :)
- feklar 10y agoFirst I would recommend Cal Newport's blog about using time wisely. http://calnewport.com/blog/2008/11/25/case-study-how-i-got-the-highest-grade-in-my-discrete-math-class/ http://calnewport.com/blog/2008/11/25/case-study-how-i-got-t... Plenty more great info in the archive: http://calnewport.com/blog/archive/ http://calnewport.com/blog/archive/ Obviously the best way would be to go through your school's course syllabus for whatever classes you want to take and look at the material you will be doing, but these are good for a general preparedness: Axler - Precalculus 2nd version http://precalculus.axler.net/ http://precalculus.axler.net/ He works through every odd exercise solution, in full. Also gives you a good intro to sets and series, summation notation, binomial theorem, all this will come up later in discrete math. He assumes the reader knows nothing about Trig as well. Gilbert Strang's videos "Highlights of Calculus" https://ocw.mit.edu/resources/res-18-005-highlights-of-calculus-spring-2010/highlights_of_calculus/ https://ocw.mit.edu/resources/res-18-005-highlights-of-calcu... just to get an overview of what calculus really is since I assume your university will throw you into an applied single variable class first year. MIT Open Courseware has their calculus (18.01/18.02) course lectures up if you want to watch them too to get an idea of what you'll run into. "Elements of Mathematics: From Euclid to Gödel" gives quite a good explanation of Mathematics as a whole, like why we learn elementary math the way we do and how it applies to more advanced concepts, explains Rings/Fields and has a really good introduction to Logic. I wish this book existed 5 years ago when I started http://press.princeton.edu/titles/10697.html http://press.princeton.edu/titles/10697.html "An Introduction to Mathematical Reasoning" by Eccles is short and excellent. You can also download the lecture notes here from CMU's course on proofs http://math.cmu.edu/~svasey/concepts-summer-1-2014/ http://math.cmu.edu/~svasey/concepts-summer-1-2014/ and try some of the homework if you want but you probably won't see any of this until second year judging by most university calendars and recommended program course list I've seen. CLRS https://en.wikipedia.org/wiki/Introduction_to_Algorithms https://en.wikipedia.org/wiki/Introduction_to_Algorithms which has a great first chapter "Foundations" that compliments Knuth's 'Mathematical Preliminaries' chapter in TAOCP vol 1. Knuth's book you can really drill yourself in these concepts though with the many, many exercises writing proofs. The skills I learned doing these exercises paid in full years later when I started more advanced math and even at work.
- TheTrueTDF 10y agoIt's a bit strange that nobody mentioned Boolean algebra: https://en.wikipedia.org/wiki/Boolean_algebra https://en.wikipedia.org/wiki/Boolean_algebra
- benkuykendall 10y agoCould you perhaps be a little more specific? Sure, we use OR, AND, and even XOR to deal with conditionals that map to T and F, but this seems like kind of a surface level use of booleans. When do we invoke the algebraic properties of the structure when coding?
- meeper16 10y agoMatrix multiplication
- jknoepfler 10y agoI want to stress before answering that everything you learn is useful if your mind is limber and willing to make connections. Some of the most valuable lessons in programming I learned from editing a philosophy journal in graduate school. I'll answer in terms of mathematical areas/concepts I've found immediately applicable in my programming career (format: what | why): linear algebra | graphics, scientific computation, mostly graphics. discrete probability | a whole shitload of perf solutions, understanding risk while planning number theory, particularly factorization | modular arithmetic for crypto, a lot of very clever hacks for compressed representation of state spaces predicate logic, basic set theory | I cannot count the number of times someone I work with has expressed something that required one elegant logical operation in a horribly convoluted way. ammortized analysis | just learn it statistics | operational reasoning using performance metrics, how to test/alarm rationally, how to reason about your customers calculus | marginal returns (important when managing a team and optimizing where to spend resources). also if you ever end up doing any kind of convex optimization, which you might, maybe. (I do, but I don't think that's super normal outside datascience). TL;DR: there's a reason CSCI curricula look like they do.
- seanmcdirmid 10y ago> I want to stress before answering that everything you learn is useful if your mind is limber and willing to make connections There are some things you don't want to learn, and there is also an oppurtunity cost to learning/practicing A instead of B.
- jknoepfler 10y agoOf course. As I said, there's a reason most CSCI curricula look similar. That said though, most applied programming work does not require hard/deep math with a steep learning cost. It requires good instincts and precise logical reasoning. Good instincts require a breadth of knowledge, moreso than a depth in any particular domain. Precise logical reasoning requires practice and patience in any of a very wide range of fields, not exclusive to mathematics. In both cases, I think developing a careful knowledge of history or neuroscience or any rigorous intellectual discipline is effective practice, although I think a foundation in logic is irreplaceable. Being an excellent programmer in some specific domains requires deep domain specific knowledge in applied math, which does have a steep opportunity cost. Absolutely. But I did not believe that was the question at hand.
- kazinator 10y agoThe CS departments in universities around the world have worked out good answers for this. Their thinking is summarized in the curricula they outline: which math courses they require as core subjects in the undergraduate CS degree program.
- kjandersen 10y agoFalse. Decisions like this can be made at a higher level than the department. The mandatory courses in my programme were applied univariate calculus and an introduction to statistical modelling (with examples drawn from biology), imposed by the faculty of science on all science majors - all the while the CS professors were screaming for an introduction to logic and discrete maths to be added to the curriculum.
- kazinator 10y agoWell, yes; you have to look at the set difference between the CS math courses, and the common ones that all science students have to take. That said, nobody in a STEM field should go without knowing at least univariate calculus. Without calculus, you can have only a poor intuition for situation involving rates of change, or little deltas being applied in one place resulting in other little deltas elsewhere. It's also necessary for stats, because you're dealing with oh, integrals such as the area under sections of a probability density function. Part of computer science is numerical analysis, too. Once upon a time, numerical analysis constituted the bulk of "computer science". CS undergrads arguably need some exposure to numerical analysis, and in such a course, the knowledge from other math courses provides support.
- douche 10y agoThe math courses in most CS programs are not particularly useful, except as a weed-out function, and even there, I would argue that it's not particularly useful, since the Calc 1/2/3/Diff EQ sequence is not all that beneficial for anything I've ever encountered, in school or my career.
- imh 10y agoProof and problem solving (It's not always taught in its own course). These assumptions about this code lead to these conclusions about its validity. If you can't prove your code works (to a human level of proof, not a machine's), why do you think it won't break? The skills of writing a simple proof (break it down so that each logical component is clear) is the same skill as writing clean and testable code.
- menssen 10y agoMaybe this is off topic (but in the spirit of the question), but: High (graduate) level formal logic in a philosophy department. Understanding (that there is) a relationship between computability theory and just basic thought is one of the (if not the) most important takeaway from my (disastrous) college career. Benson Mates [1] is the canonical (succinct) textbook. [1] https://www.amazon.com/Elementary-Logic-Benson-Mates/dp/019501491X https://www.amazon.com/Elementary-Logic-Benson-Mates/dp/0195...
- susam 10y agoAt my previous job ( https://www.rsa.com/ https://www.rsa.com/ ), where I worked for 7 years, I've often had to use various mathematical techniques to do my work as a software engineer. Here are some concrete examples from my career. * Combinatorics and probability theory - Entropy analysis of authentication schemes, algorithms for enumeration and analysis of related combinations and permutations, etc. * Calculus and probability theory - Implementation of bloom filter for space-efficient indexing, tests and analysis of false-positive rates, etc. * Statistics - Adaptive authentication schemes, performance measurements and predictions, network event correlation, etc. * Discrete mathematics and algorithms - Tree traversals, graph search algorithms, etc. were useful in a variety of situations, e.g. data retrieval in tree-based distributed databases. * Asymptotic analysis, Big O notation, etc. - Data deduplication in distributed databases. * Modular arithmetic - I didn't really implement any cryptography algorithms; I only used them. But the understanding of modular arithmetic was essential to understanding some of the limitations of cryptographic algorithms based on modular arithmetic, e.g. why the message size cannot exceed the size of the modulus, as well as for software engineering tasks like decoding certificates found in network traffic. * Formal language theory, DFAs, etc. - Parser generators for network event parsing, SQL engine development and related query optimizations, etc. So these are 7 examples from 7 years. There may be more examples but I cannot remember them right now. I have felt from my personal experience that although most of the work does not involve mathematics, once in a while an interesting problem comes up that can be solved efficiently with the knowledge of mathematics. It is not easy to predict when such a problem would come and it is not always easy to recognize whether the problem at hand can be solved or analyzed efficiently by known mathematical techniques. So it is good to have someone in the team or be the person who has a good breadth of knowledge in mathematics, so that when such problems do come up, they are addressed efficiently. Fortunately for me, I love mathematics and there were people around me who also loved mathematics, so we got a lot of interesting work done.
- oleksiyp 10y agoMining Massive data sets kind of things. http://mmds.org http://mmds.org Algorithms that are giving not exact, but pretty good results on giant data sets.
- Bahamut 10y agoSet theory is useful, as well as category theory (although I never formally studied category theory myself...maybe eventually I will). Basic logic is also important - understanding symbolic logic, and methods of proof (direct inference, proof by contradiction, induction, etc.) also prove important. I have had to use basic trigonometry in the past as well, and linear algebra (for CSS rotations/translations driven by JS). Algorithmic number theory, closely related to algebraic number theory, drives cryptography. Harmonic analysis drives audio. Algebraic geometry powers facial recognition software. The list goes far deeper, but I have been away from the math world for 6 years & have forgotten much.
- gravypod 10y agoLambda Calculus since it's a computer science field of study that makes math, in my opinion, useful for most situations in our field. Math isn't majorly needed and you can learn what you need on the fly. For instance, if you want to get into game development you need to understand some fairly complex math concepts but nothing is stopping you from attacking the problem and either a) working around it with your understanding of the computing devices you are using or b) by learning what you need on the fly. If you want to practice in a field that operates on computers, don't learn another field. That's like saying "what kind of philosophy most correctly correlates to learning about horticulture?" Just start to learn horticulture and as you need philosophy it will be tied in.
- ninguem2 10y ago>Math isn't majorly needed and you can learn what you need on the fly. I really, really hope that whatever you are doing does not involve cryptography.
- gravypod 10y agoCryptography isn't a computer science field. It is an extension of math. It's the exception to the rule, not the rule itself. Cryptography as a field of study has existed long, long before computer science was a twinkle in anyone's eyes. Modern day cryptography only centers around computer science in the practice of implementation.
- dietr1ch 10y agoGetting crypto right is not only about having a strong encryption algorithm. I'd say that what makes crypto hard is that it requires a lot of knowledge on both math and computers, but it might be considered a not-only CS field as the math requirement is higher than usual on CS.
- gravypod 10y agoAs I said, crypto is not CS but CS can be used to implement cryptography. Crypto is no more CS then it is EE. You can implement cryptographic elements in hardware but you don't see the math people setting up shop in the EE labs at a college so I don't know why you see them setting up shop in computer labs.
- jkingsbery 10y agoSomething I haven't seen anyone mention yet: the part of discrete math where proofs, particular proofs by induction. It is a huge help to be able to think in terms of recursive algorithms in many applications, and proofs by induction both give you the tools for thinking this way and the framework for demonstrating that recursive algorithms are correct.
- harveywi 10y agoType theory. The Curry-Howard-Lambek correspondence shows that type theory, logic, and category theory are equivalent. Even ideas such as set theory can be grounded in type theory (due to the univalence axiom), as type theory can be used as a foundation (via homotopy type theory) for all of mathematics. There are lots of practical uses. For example, the billion dollar mistake [1] is painfully obvious when viewed through the lens of type theory. Software such as Coq can be used to write verified (provably correct) software and can be used by mathematicians for proving theorems. [1] http://lambda-the-ultimate.org/node/3186 http://lambda-the-ultimate.org/node/3186
- richard_todd 10y agoThe book "Concrete Math" (https://en.wikipedia.org/wiki/Concrete_Mathematics https://en.wikipedia.org/wiki/Concrete_Mathematics) was written as a book-sized expansion of the Mathematical Preliminaries chapter of TAOCP ... so if you want to have a base of knowledge to help you analyze algorithms, it would appear this is a good place to start. I'm working my way through it now.
- slantaclaus 10y agoI wish I had've learned linear algebra in college because it is essential to machine learning
- 3chelon 10y agoTo quote Terminator 2: "Erm... all of them, I think."
- user5994461 10y ago> Which areas of math are practical to programming/algorithms and why? The basics: + - x / Generally speaking, any vector or array can be thought of as a matrix (not that it is important). Some problems and domains involved many operations on [multi dimensional] matrices. Where some math knowledge is advised. Then there is "graph" both theory and practice. It's usually classified as math but has little to do with mathematics. I'd rather consider that as a unique separate domain with many practical and theoretical applications in other fields. Forget about "crypto". Nothing of that is needed for programming. You'll use some algorithms but you'll never have to write or invent them. In a theoretical sense. "Functional [programming]" is a branch of mathematics. ---- Overall. Math is seriously overrated and has nothing to do with programming. If you're into programming. Maths are simply not required to be a programmer. Don't worry about that. There are some domains (maps=graph, 2D/3D=geometry, variousstuff=matrices) in where programming regularly require some maths. The maths part is always a very specific subset that can usually be learnt alone. If you're into abstract mathematics. There are some theoretical stuff that can be worked on which are very far from practical programming.
- MarkMMullin 10y agoProgramming is pretty broad, as others have observed - in part of my world, scene reconstruction for machine vision tends to drag in tensor calculus, but the average enterprise developer is safe with the basics - also, good libraries mean you have the ability to use functions and processes you need, as opposed to getting recurrent nightmares about numerical stability when you have to code the realization of a complex process yourself
- deleted 10y ago[deleted]
- oleksiyp 10y agoTensor math seems to be very important