In most computer science degree programs, abstract algebra, discrete mathematics, graph theory, and other math courses are offered alongside the computer science courses. These types of mathematics are used by a wide range of professions, including machine learning and software engineering.
Some of the real-life applications of abstract algebra : Vector Space in Physics and Groups in Differential Geometry: The development of vector spaces has helped physicists solve the complex space and location problem.
Even though computers do all the calculations for us. Still, they can't interpret the results of our calculations whether they're statistical or mathematical. So that's why we need to know linear algebra if we want to do statistical programming.
You do not need to learn linear algebra before you get started in machine learning, but at some time you may wish to dive deeper. In fact, if there was one area of mathematics I would suggest improving before the others, it would be linear algebra.
Maybe a slightly different take on your question, but still... The functional language Haskell uses concepts from algebra (particularly category theory) such as monads, monoids, arrows and whatnot.
Using Haskell's typeclasses, you could also make any object into a group, or a ring, for example, simply by defining operations (operators) on them. Guaranteeing that the operations you define actually comply to the group/ring axioms would be your responsibility, however.
The text that you want here is Abstract Algebra, A Computational Approach by Chuck Sims. The author will recommend that you use the APL programming language. The book is out of print, but you can probably find it in your library.
There is also the GAP Computer Algebra System which is fun to use for group theory.
Advanced resources:
Magma: fairly sophisticated CAS that can handle a wide range of concepts from abstract algebra.
Macaulay 2: used to study polynomial rings, especially Gröbner bases.
SINGULAR: used to study polynomial rings.
A key fact in studying group theory is that every group is isomorphic to a permutation group by the regular action. Thus, the key to understanding group theory is to understand the permutation groups.
Finally, any language that supports defining your own objects and defining a binary operator on two instances of the object will support learning the theory through programming.
If you're playing with groups, you may want to visualize them using Group explorer.
Mathematica has a lot of useful functions for dealing with concepts in abstract algebra. Unfortunately, it's proprietary software and very expensive. Sage is a free alternative, which also has a pretty good repertoire of abstract algebra functions, although I haven't used it as extensively so I can't comment much more on it.
Any language with fixed size unsigned integers (eg. the unsigned int
type in C) is an example of such an implementation. Addition with unsigned values is essentially the same as addition over Z232 (ie. the integers modulo 232), which you are probably learning about in your abstract algebra class.
Modular addition over such a group is not terribly interesting, though. More interesting might be modular addition over a group of size N where N has prime factors other than just 2, or size P where P is a prime. To experiment with such groups, you may have to implement such arithmetic operations yourself (it's not hard). Languages with operator overloading can make the implementation a lot more convenient to use.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With