• Create Account

# Abstract Algebra and Number Theory in Computer Science?

Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

12 replies to this topic

### #1DevLiquidKnight  Members   -  Reputation: 743

Like
0Likes
Like

Posted 20 June 2012 - 11:13 PM

I was wondering if someone can give some concrete examples of where Abstract Algebra and Number Theory appear in computer science. The only application I know of is cryptography. Is their more areas then this? What exactly, how would these courses help with advanced computer science studies?

### #2LorenzoGatti  Crossbones+   -  Reputation: 1985

Like
1Likes
Like

Posted 21 June 2012 - 01:21 AM

Discrete Fourier transforms and function transforms in general require a good grasp of algebra, including the part that overlaps with "number theory".
Produci, consuma, crepa

### #3apatriarca  Crossbones+   -  Reputation: 1292

Like
1Likes
Like

Posted 21 June 2012 - 07:04 AM

Abstract algebra is one of the prerequisites to understand Lie Groups which are very important in Physics (both in theory and applications). All the transformation groups studied in linear algebra are indeed examples of Lie groups. There are also some quite recent methods of numerical integration based on them.

The computational commutative algebra tools, primarily Gröbner bases, have several applications from cryptography, to computational biology, to the study of discrete non-linear PDE... They are basically useful each time you have to solve some system of multi-variate polynomials.

The study of finite groups (and also some number theory) can be useful to solve combinatorial problems which sometimes arise in theory or trying to solve some real software problem.

Why are you interested in applications of those fields? Do you want to know if it make sense to take them as courses? Are you curious about the applications of something you have studied?

Edited by apatriarca, 21 June 2012 - 07:05 AM.

### #4DevLiquidKnight  Members   -  Reputation: 743

Like
0Likes
Like

Posted 21 June 2012 - 01:59 PM

My primary reason for asking is I want to make sense of taking them as courses. While its easy to reiterate taking as much math as possible for computer science. I think its equally important to understand what you can actually do with the math beyond just knowing it for the sake of it. I am working on my degree in mathematics, and want to pick the classes carefully in a way to maximize my computer science potential. If theirs very few applications of abstract algebra or number theory, it seems like it might be better to take a different course.

Edited by DevLiquidKnight, 21 June 2012 - 02:02 PM.

### #5Álvaro  Crossbones+   -  Reputation: 8010

Like
2Likes
Like

Posted 21 June 2012 - 02:12 PM

My university studies consisted almost exclusively of math classes, the vast majority of which had nothing to do with computers (differential geometry, algebraic topology, complex variable calculus...). These classes trained me in thinking abstractly, and although the specific things I learned there are not useful, the general mindset is. This is just my version of "take as much math as possible".

Besides the argument above, abstract algebra contains the language in which a lot of the other math classes will be described (groups, rings, fields, morphisms...). If you are going to get a degree in mathematics, you should definitely learn abstract algebra.

### #6DevLiquidKnight  Members   -  Reputation: 743

Like
0Likes
Like

Posted 21 June 2012 - 02:33 PM

Besides the argument above, abstract algebra contains the language in which a lot of the other math classes will be described (groups, rings, fields, morphisms...). If you are going to get a degree in mathematics, you should definitely learn abstract algebra.

I agree with this to extent, but abstract algebra seems like it would be more applicable to graduate level math courses. I also am trying to find some areas where abstract algebra, or number theory are used in CS. It seems like a lot of people say taking high level math can be beneficial, and I am sure thinking abstractly can indeed help. However, is their more benefits then that? For example as:

Discrete Fourier transforms

Pointed out knowing these could be useful for image/video compression algorithms, from what I understand at least.

### #7apatriarca  Crossbones+   -  Reputation: 1292

Like
1Likes
Like

Posted 21 June 2012 - 03:19 PM

@alvaro: It looks like we basically have the same mathematical background. What's your field of specialization?

What are your long term objectives? Why are you studying for a degree in Mathematics if you are mainly interested in Computer Science?

Taking advanced mathematical courses you learn to think in a different, more abstract way. You will also learn new ways to solve problems and to cope with complexity. These are useful abilities on their own. But in most CS jobs you will probably never have to use the most advanced topics (but if you know them you can probably find some applications - I have some problems in finding a mathematical theory which has no real world applications). If you are studying for a degree in Mathematics, then Abstract Algebra is a must (you should also take at least one course in general topology). I think it is more important to learn the basic language and tools used in most of mathematics than learn some tool you can take easily once you have the basis.

### #8DevLiquidKnight  Members   -  Reputation: 743

Like
0Likes
Like

Posted 21 June 2012 - 04:38 PM

What are your long term objectives? Why are you studying for a degree in Mathematics if you are mainly interested in Computer Science?

Most the concepts I've seen in computer science are derived from mathematics, even the algorithms. Therefore it made sense to study mathematics before studying computer science.

### #9Álvaro  Crossbones+   -  Reputation: 8010

Like
0Likes
Like

Posted 21 June 2012 - 08:35 PM

@alvaro: It looks like we basically have the same mathematical background. What's your field of specialization?

I specialized in the geometry of differential equations with singularities. In particular, I was working with vector fields in dimension 3. But I decided I didn't like it enough and I wasn't making enough progress to feel satisfied, so I quit my Ph.D. program and got a programming job. After 10 years as a programmer, I now have a job in the financial industry where I do research in mathematical modeling of markets (and still some programming).

The vast majority of the math I use is limited to linear algebra, statistics and a bit of calculus. But recently I've been working on a problem whose solution involves calculus of variations, differential equations, Fourier transform, generating functions and complex analysis. Still no real-world application for algebraic topology, though.

### #10apatriarca  Crossbones+   -  Reputation: 1292

Like
1Likes
Like

Posted 21 June 2012 - 09:20 PM

Still no real-world application for algebraic topology, though.

My master thesis (I graduated in April) was in topological data analysis. In this field, homological methods are for example used to retrieve global information about some data which can be described as some kind of filtration of simplicial complexes. You may find this page interesting (this is not my thesis but the research group at Stanford). Maybe you will find some usage of these results in your job.. I'm currently in the process of deciding whether I'm interested in a PhD or not.

### #11LorenzoGatti  Crossbones+   -  Reputation: 1985

Like
0Likes
Like

Posted 22 June 2012 - 02:10 AM

I am working on my degree in mathematics, and want to pick the classes carefully in a way to maximize my computer science potential. If theirs very few applications of abstract algebra or number theory, it seems like it might be better to take a different course.

From the point of view of getting a mathematics degree, I don't get how the foundations of abstract algebra and number theory can be anything other than formally, or at least practically, required basic courses. We are talking about general theory, not about making these fields your specialty.
If you are interested in applying math to computer science, learning a little bit of everything without blind spots is the best way to improve your chances of knowing something relevant to your practical problems.
Produci, consuma, crepa

### #12DevLiquidKnight  Members   -  Reputation: 743

Like
0Likes
Like

Posted 22 June 2012 - 02:06 PM

From the point of view of getting a mathematics degree, I don't get how the foundations of abstract algebra and number theory can be anything other than formally, or at least practically, required basic courses.

This would be true for a pure math degree. Even then its typically optional for undergrads, theirs plenty of other math courses that are offered as upper division electives.

My question still remains though is their any use to this stuff in computer science on a concrete level other then knowing the theory.

Edited by DevLiquidKnight, 22 June 2012 - 02:23 PM.

### #13Álvaro  Crossbones+   -  Reputation: 8010

Like
1Likes
Like

Posted 22 June 2012 - 08:32 PM

The answer is probably "no", although if you are intimately familiar with the subject, you can identify opportunities to use some of this knowledge in many places. For instance, many combinatorial problems (in how many ways can you make change of 1$using 1c, 5c, 10c, 25c, 50c and 1$ coins?) can be solved using generating functions.

Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

PARTNERS