# Fields that require both CS and pure math

I'm mainly a CS major, but I also want to learn more advanced mathematics. I see lot of cross over between CS and applied math, same can't be said about pure math.

Definition of 'advanced': Something a pure math major learns during and after late undergraduate years.

What are the fields that combines advanced mathematical topics with computer science?

Theoretical computer science and computational group theory are good examples.

• There are lots of interesting answers to this question, but I don't know what is meant by CS in this context. Is it programming? Theory of computation? Formal Languages? Analysis of algorithms? Something else really cool that I forgot to mention? Commented Aug 9, 2010 at 15:28
• The more theoretical part of CS, what you said except programming are what I was thinking. Other possibility are database theory, artificial intelligence and networks. Commented Aug 9, 2010 at 15:57
• – user2468
Commented Aug 24, 2012 at 14:45

Cryptography is a field which requires lot of Number theory. Formal languages and automata theory requires some Graph theory, and these automata things can be connected to computer science as well.

Computational algebraic geometry is the first example that comes to mind. It's used in phylogenetics, see here (you can also look up the book Algebraic Statistics for Computational Biology). It also shows up in robotics and control theory, but I know a lot less about that.

Polytopes (see Coxeter - Regular Polytopes or Grunbaum - Convex Polytopes) also appear in a lot of applications. The only specific one that comes to mind at the moment is the problem of figuring out whether an object (like a robot) can traverse a given maze. The algorithms use the convex hull of the robot to test whether or not it could traverse the maze. I'm sure there are a lot of people more knowledgeable than me on the subject.

Semantics of programming languages: the modern version is a mixture of type theory and category theory. Also, there is a lot of subtle issues in logic (linear logic in particular) that crops up.

Design of programming languages: Things like linear logic have influenced the addition of a number of features to languages (or reasonable restrictions). monads in Haskell come straight out of category theory.

Analysis of programming languages: static analysis is nowadays all based on abstract interpretation, which is fundamentally an application of lattices and of Galois connections.

Much of data mining requires an understanding of high dimensional geometry. Lots of machine learning also requires an understandind of advanced probability theory.

• +1. Crucial to data mining applications, and also speech recognition, is concept analysis, which involves fairly intense probabalistic logic and very large dimension linear algebra. Commented Aug 9, 2010 at 8:26

Robotics. I don't know much about this field but from a theoretical point of view a lot of lie group theory is used (to describe joint motion and position). In particular the lie theory of rigid motions i.e. of the Euclidean group $SE(3)$ is relevant. I would imagine CS would come in more from the computational side when larger calculations are involved. Also its robots which need to be built so plenty of mechanical and electrical engineering going on here.

This is mostly based on a quick glance at http://www.springer.com/computer/ai/book/978-0-387-20874-9. Which is written for an undergraduate math or engineering major.

I am working with the Schroedinger equation, which surprisingly leads to graph theory (via cell decompositions).

To get a good grip on these graphs, I did a lot of programming, since doing it by hand takes way too much time.

I generated about 100 examples, and from there, I could easily see what needed to be proved, something which was quite hard prior to that discovery.

It is now part of my thesis (Original article paywalled).

• sounds very interesting! Did you write up a note about it?
– anon
Commented Aug 8, 2010 at 13:26
• The result will be published later this year. Commented Aug 9, 2010 at 6:37
• any chance you could link it here (since this was over 3 years ago)? Commented Nov 29, 2013 at 23:21

Number Theory: many large numbers were tested by using computers.

Linear programming: many algorithms have been developed.

Today is an open question to find an efficient algorithm/data structure that can be used to index/search information in a high dimensional space (ie d > 20).

I've seen approaches using computational geometry, space filling curves, principal component analysis, etc.

Computer graphics is a prime example of a field that needs sophisticated CS and math.

Questions on computational complexity can be asked about problems and algorithms arising in any subject including pure mathematics subjects. e.g. in computational number theory, computational topology, etc, and as Igor Pak describes on his blog, in compuational combinatorics.

There is a lot of opportunity for merging the fields in designing advanced real-time embedded controllers. Embedded controllers run everything from your car's ECU to the flight control system on a jetliner. There is demand to develop control algorithms that allow for better fuel efficiency, expanded performance envelopes, better on-board diagnostic and prognostic capabilities, redundancies and automated detection of sensor or component failures, etc.

Most embedded controllers now can clear basic linearized models between 100 Hz and 10 kHz. However, some of the advanced algorithms cannot be cleared in real time by existing components. There are two sides of this coin: one is hardware development; the other is algorithm development. Both sides of this coin depend a lot on CS theory as well as pure and applied mathematics. Things like distributed on-board processing, real-time parallel computation, over-the-air streaming of compressed real-time data, etc. are all of widespread interest in academia and industry.