<p>One possibily path into abstract algebra could be to look at it from point of view of cryptography, which is about algorithms on finite field. Fields are rings, and fields are also two groups coupled by simple laws. Field theory uses vector spaces in prominent position (Galois theory), so this angle should cover a lot of abstract algebra. The book</p>

<p><a href="http://www.shoup.net/ntb/">A Computational Introduction to Number Theory and Algebra</a> by V. Shoup</p>

<p>could therefore be of interest. </p>

<p>My personal recommendation would be to ignore applications, and study a basic undergraduate maths text on abstract algebra. There is no shortage of those. Just trust that all this stuff is useful, and that the use will reveal itself more easily once you have a basic grasp of the material.  </p>

<p>Most basic algebra is constructive and you can easily implement basic concepts to gain a better understanding, e.g. algorithms that check if a multiplication table is a group, an equation solver in a group, a program that checks if two algebraic structures are isomorphic etc. Most of these problems have brute-force solutions which are easy to implement, but slow. The more you learn about algebra, the more algorithmic shortcuts you can make, to speed up your programs. E.g. the famous <a href="https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test">Miller-Rabin</a> and <a href="https://en.wikipedia.org/wiki/AKS_primality_test">AKS</a> primality tests.</p>

CC BY-SA 3.0
2013-02-24T21:05:00.783Z
2013-02-25T10:12:53.450Z
2013-02-25T10:12:53.450Z
Martin Berger
<p>Check out this book by Rudolf Lidl and Harald Niederreiter: Introduction to Finite Fields and its Applications (2nd edition, 1994) <a href="http://rads.stackoverflow.com/amzn/click/0521460948" rel="nofollow">http://www.amazon.com/Introduction-Finite-Fields-their-Applications/dp/0521460948</a></p>

<p>Quoting the book description in Amazon: "The theory of finite fields is a branch of modern algebra that has come to the fore in recent years because of its diverse applications in such areas as combinatorics, coding theory, cryptology and the mathematical study of switching circuits." </p>

CC BY-SA 3.0
2013-02-28T15:24:44.757Z
2013-02-28T15:24:44.757Z
Leandro Zatesko
<p>Besides cryptography, a very nice practical application of algebra in computer science is perhaps the implementaion of fractions, where numerator and denominator are of an integral or "big integer" type and encoding length is kepts small by reducing fractions (i.e. factoring out the greatest common divisor of numerator and denominator).</p>

<p>Concerning "big integer" data types, an interesting result is the so-called "Chinese remainder theorem" which permits the parallelization of integer operations once a representation as prime factors of the arguments are known.</p>

<p>Furthermore, most of the stuff found in algebra can be aesthetically pleasing (just a personal point of view).</p>

CC BY-SA 3.0
2013-02-25T09:34:39.403Z
I don't see how this addresses the question?
András Salamon
CC BY-SA 3.0
2013-02-25T08:42:22.167Z
2013-02-25T08:42:22.167Z
user13407
<p>You could try the notes from Madhu Sudan's course: <a href="http://people.csail.mit.edu/madhu/FT98/course.html">Algebra and Computation</a></p>

CC BY-SA 3.0
2013-02-25T12:51:40.400Z
This answers the question very nicely. It's a shame that "Mathematics for Computer Science" courses such as MIT's 6.042 don't seem to cover any abstract algebra.  At least not the ones I have seen.
Majid
CC BY-SA 3.0
2013-02-24T11:34:12.947Z
2013-02-24T11:34:12.947Z
arnab
<p>I have a reasonable undergrad math education but have never been 100% comfortable with abstract algebra (the mathematics of groups, rings, fields etc. ).  I think this was partly as I needed to see applications and any that I could find were in physics, not CS.  As my interest is really CS, are there any materials available now (online drafts, lecture notes, videos, books) that cover abstract algebra from the point of view of applications in CS and in particularly algorithms/theory?  I am happy for these applications to be entirely theoretical but they shouldn't assume any pre-existing abstract algebra knowledge.</p>

<p>I am pretty sure that were these resources to exist, they would be appreciated by  a large number of CS researchers.   </p>

CC BY-SA 3.0
2013-02-24T10:57:12.873Z
stackexchange gives plenty of "Related" questions to yours on the right hand side bar.  Please read them first, in particular [Algebraic structures in Computer Science](http://cstheory.stackexchange.com/questions/10916/uses-of-algebraic-structures-in-theoretical-computer-science?rq=1).
Uday Reddy
CC BY-SA 3.0
2013-02-24T11:11:32.493Z
@UdayReddy Thanks. I am reading those and some of the links have good stuff in them. However, ideally I am looking for a lecture course entitled "An introduction to abstract algebra for theoretical computer scientists" (as a random fictional example) rather than a list of CS results where abstract algebra have been crucial.  My interest is really on algorithms/theory and far from category theory, for example.
Majid
<soft-question><algebra><teaching>
Abstract algebra for Theoretical Computer Scientists
Majid
# Abstract algebra for Theoretical Computer Scientists

(Asked by: username_0 on 2013-02-24)

I have a reasonable undergrad math education but have never been 100% comfortable with abstract algebra (the mathematics of groups, rings, fields etc. ). I think this was partly as I needed to see applications and any that I could find were in physics, not CS. As my interest is really CS, are there any materials available now (online drafts, lecture notes, videos, books) that cover abstract algebra from the point of view of applications in CS and in particularly algorithms/theory? I am happy for these applications to be entirely theoretical but they shouldn't assume any pre-existing abstract algebra knowledge.

I am pretty sure that were these resources to exist, they would be appreciated by a large number of CS researchers.

**Tags:** soft-question, algebra, teaching

> **Comments:**
> **username_1**: stackexchange gives plenty of "Related" questions to yours on the right hand side bar.  Please read them first, in particular [Algebraic structures in Computer Science](http://cstheory.stackexchange.com/questions/10916/uses-of-algebraic-structures-in-theoretical-computer-science?rq=1).  
> **username_0**: @UdayReddy Thanks. I am reading those and some of the links have good stuff in them. However, ideally I am looking for a lecture course entitled "An introduction to abstract algebra for theoretical computer scientists" (as a random fictional example) rather than a list of CS results where abstract algebra have been crucial.  My interest is really on algorithms/theory and far from category theory, for example.  

---

## 4 answers

### Answer by username_6 on 2013-02-24. Score: 19 | Accepted answer

You could try the notes from Madhu Sudan's course: [Algebra and Computation](http://people.csail.mit.edu/madhu/FT98/course.html)

> **Comments:**
> **username_0**: This answers the question very nicely. It's a shame that "Mathematics for Computer Science" courses such as MIT's 6.042 don't seem to cover any abstract algebra.  At least not the ones I have seen.  

---

### Answer by username_2 on 2013-02-24. Score: 14

One possibily path into abstract algebra could be to look at it from point of view of cryptography, which is about algorithms on finite field. Fields are rings, and fields are also two groups coupled by simple laws. Field theory uses vector spaces in prominent position (Galois theory), so this angle should cover a lot of abstract algebra. The book

[A Computational Introduction to Number Theory and Algebra](http://www.shoup.net/ntb/) by V. Shoup

could therefore be of interest.

My personal recommendation would be to ignore applications, and study a basic undergraduate maths text on abstract algebra. There is no shortage of those. Just trust that all this stuff is useful, and that the use will reveal itself more easily once you have a basic grasp of the material.

Most basic algebra is constructive and you can easily implement basic concepts to gain a better understanding, e.g. algorithms that check if a multiplication table is a group, an equation solver in a group, a program that checks if two algebraic structures are isomorphic etc. Most of these problems have brute-force solutions which are easy to implement, but slow. The more you learn about algebra, the more algorithmic shortcuts you can make, to speed up your programs. E.g. the famous [Miller-Rabin](https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test) and [AKS](https://en.wikipedia.org/wiki/AKS_primality_test) primality tests.


---

### Answer by username_3 on 2013-02-28. Score: 3

Check out this book by Rudolf Lidl and Harald Niederreiter: Introduction to Finite Fields and its Applications (2nd edition, 1994) [http://www.amazon.com/Introduction-Finite-Fields-their-Applications/dp/0521460948](http://rads.stackoverflow.com/amzn/click/0521460948)

Quoting the book description in Amazon: "The theory of finite fields is a branch of modern algebra that has come to the fore in recent years because of its diverse applications in such areas as combinatorics, coding theory, cryptology and the mathematical study of switching circuits."


---

### Answer by username_4 on 2013-02-25. Score: 0

Besides cryptography, a very nice practical application of algebra in computer science is perhaps the implementaion of fractions, where numerator and denominator are of an integral or "big integer" type and encoding length is kepts small by reducing fractions (i.e. factoring out the greatest common divisor of numerator and denominator).

Concerning "big integer" data types, an interesting result is the so-called "Chinese remainder theorem" which permits the parallelization of integer operations once a representation as prime factors of the arguments are known.

Furthermore, most of the stuff found in algebra can be aesthetically pleasing (just a personal point of view).

> **Comments:**
> **username_5**: I don't see how this addresses the question?  

---

