4 ms·
Data structures, algorithms, language/automata theory, computer architecture, set theory, logic, graph theory, linear algebra, combinatorics, and abstract algeb
by kd0amg 16y ago
Data structures, algorithms, language/automata theory, computer architecture, set theory, logic, graph theory, linear algebra, combinatorics, and abstract algebra have been the subjects I got the most mileage out of.
Data structures and algorithms will teach you to do more complicated tasks than "tossing text about." Languages and automata lead into algorithms for text processing. Architecture may be less generally useful, but I find it interesting (and unavoidable since I'm interested in compilers). Set theory and logic are sort of the base language for other topics in math. Abstract algebra seems to be the canonical way to really learn how to prove things. Graph theory and linear algebra have some more direct ties to computer science topics (e.g. linear algebra comes up a lot in 3D graphics). Combinatorics does too, but a lot of it seems to be a quick way to realize that brute force is going to be a bad idea. There are a lot of ties between some of these subjects. Algebraic graph theory applies linear and abstract algebra to graphs (I recently had a chat with a professor on applying algebraic graph theory to characterize finite automata). A lot of graph processing algorithms, of course, make more sense with a good background in graph theory. I've also run into some other interesting topics for which the math background was necessary: for example, error-correcting codes are easily understood with linear and abstract algebra.
The best thing studying math has done for me is to give me many different ways to describe a problem. Chances are one of the ways will have some well-developed theory behind it revealing a nice way to solve the problem. What you specifically will gain from such study will depend a lot on what you work on.