News for hackers. Stuff that matters.
Re:Abstract Algebra (2016) [pdf] by hackernewsacct on Friday March 10, 2017 @03:01PM (#13841592)
Besides crypto. What applications does Abstract Algebra have in CS?
Re:Abstract Algebra (2016) [pdf] by Drup on Friday March 10, 2017 @03:21PM (#13841775)
I would tend to say: It's the basis of everything. Here are some examples that were not given in other comments:

- Graph theory is pretty algebra-heavy, and graphs are everywhere.

- Static analysis, in particular abstract interpretation, relies heavily on vector spaces and various algebraic structures.

- All the "highly functional" structures (you know, monads and the like) are an off-shot branch of algebra.

- Patch theory (git, darcs and other versioning systems that rely on patches). You get nice stuff if you use algebraic properties (such as having your patch commutes and things like that).

Re:Abstract Algebra (2016) [pdf] by jinfiesto on Saturday March 11, 2017 @01:08AM (#13844475)
To extend the "functional structures" comment, monoids are literally everywhere in software.
Re:Abstract Algebra (2016) [pdf] by cpsempek on Friday March 10, 2017 @03:46PM (#13841979)
I don't know about very specific applications, but I think the field itself and is very complimentary to CS, especially when considering finite or discrete structures. As it's name suggests, abstract algebra abstracts "nice" properties of, e.g., integers and formalizes them in a very concise and general manner. Modern abstract algebra is deeply tied to category theory, and so now these "nice" properties get abstracted even further out to maps between objects, and as maps between categories (i.e., functors). As such abstract algebra is tied to functional programming on some level (I know nothing about this connection though).

Linear algebra is a subfield of abstract algebra, and lots of general theorems about what classes of matrices are diagonalizable, or what their eigenvalues look like, etc. are within the purview of abstract algebra. These types of results are relevant to many algorithms, e.g., page rank.

Aside from that, I think abstract algebra is quite a beautiful field in its own right. Two books I would recommend are Artin's Abstract Algebra (as an intro) and Lang's Algebra (more advanced, good bridge into the category theory perspective).

Re:Abstract Algebra (2016) [pdf] by semigroupoid on Saturday March 11, 2017 @09:25AM (#13845489)
I second the recommendation for Artin's Algebra. I'd also recommend Paolo Aluffi's Algebra: Chapter 0, which is a nice alternative to Lang and also uses category theory right from the beginning and doesn't require many prerequisites.

[0] https://www.amazon.com/Algebra-Chapter-Graduate-Studies-Math...

Re:Abstract Algebra (2016) [pdf] by dkarapetyan on Friday March 10, 2017 @03:06PM (#13841644)
Monoids, groups, rings, fields, etc. are all very relevant to cryptography. In general algebraic constructions come up more often than you might think. The idea of a homomorphism though not specific to algebra is prevalent in almost any formal domain. Compilers by and large can be considered homomorphisms that preserve certain semantic properties which if you dig deep enough can be expressed as algebraic structures: http://www.logicmatters.net/resources/pdfs/Galois.pdf.

Developing an intuition for all those things is best accomplished by studying abstract algebra.

Re:Abstract Algebra (2016) [pdf] by jinfiesto on Saturday March 11, 2017 @01:09AM (#13844480)
Monoids aren't just relevant to cryptography. Any structure with an associative "+" operator forms a monoid (technically semi-group, but whatevs.) Lists are a prime example.
Re:Abstract Algebra (2016) [pdf] by dualogy on Friday March 10, 2017 @08:46PM (#13843669)
Thanks for the link, the whole site (logicmatters.net) seems awesome, aka for me worth bookmarking for future study!
Re:Abstract Algebra (2016) [pdf] by Smaug123 on Saturday March 11, 2017 @11:13AM (#13845870)
Smith is a great expositor. I had the joy of participating in a category theory reading group with him; he really knows his stuff. It's refreshing to be taught by a mathematician/philosopher rather than simply a mathematician.
Re:Abstract Algebra (2016) [pdf] by swordswinger12 on Friday March 10, 2017 @03:11PM (#13841692)
Most of the modern theory of error-correcting codes has its roots in abstract algebra. It's also important in theory - Babai's recent celebrated quasipolynomial algorithm for graph isomorphism relies on group theory. Most of the recent results in cryptographic obfuscation also rely on group theory because they encode circuits as permutation matrices using Barrington's theorem.
Re:Abstract Algebra (2016) [pdf] by EdwardCoffin on Friday March 10, 2017 @06:17PM (#13842987)
Guy Steele [1] sometimes mentions it. He gave an interesting Google Tech Talk called Four Solutions to a Trivial Problem [2], and at 1:59 [3] he said:

Also, algebraic properties are important. I've got a background in applied algebra, and I think that has informed my programming. And I think that making programmers aware of algebraic properties of their code, and communicating some of those properties to the compiler, may be worthwhile.

The language Fortress [4], which he was one of the language designers of, allowed one to explicitly provide the compiler with such information - you could say that a certain operation was distributive or associative for instance, and the compiler could then do some refactorings and optimizations taking this knowledge into account.

[1] https://en.wikipedia.org/wiki/Guy_L._Steele_Jr.

[2] https://youtu.be/ftcIcn8AmSY

[3] https://youtu.be/ftcIcn8AmSY?t=1m59s

[4] https://en.wikipedia.org/wiki/Fortress_(programming_language...

Re:Abstract Algebra (2016) [pdf] by FullyFunctional on Saturday March 11, 2017 @03:18AM (#13844770)
GHC Haskell (not standard Haskell) supports this and it's heavily used. Look for "Rewrite rules".
Re:Abstract Algebra (2016) [pdf] by chas on Friday March 10, 2017 @04:48PM (#13842449)
I think that Abstract Algebra has the same relationship with CS as Linear Algebra has with the theory of most engineering disciplines. That is to say that in computer science, Abstract Algebra is the natural setting to define and decompose problems and design their solutions. For a specific example, CRDTs are a fundamentally algebraic approach to problem solving in computer science. They were discussed recently on HN here. [0] If you want to go further down that rabbit hole, Joseph Goguen spent a large portion of his career working on applications of Abstract Algebra to computer science. He produced a category-theory-focused introduction here. [1]

[0] https://news.ycombinator.com/item?id=13803843 [1] https://www.cs.ox.ac.uk/files/3395/PRG72.pdf

Re:Abstract Algebra (2016) [pdf] by catnaroek on Friday March 10, 2017 @03:19PM (#13841753)
As Stepanov said: “[Generic] algorithms are defined on algebraic structures”. He even gives an example: “I realized that a parallel reduction algorithm is associated with a semigroup structure type”. If you care about algorithms being maximally reusable (as in “just reuse”, rather than “tweak and reuse”), you definitely want to adopt an abstract-algebraic mindset.

Source: http://www.stlport.org/resources/StepanovUSA.html

Re:Abstract Algebra (2016) [pdf] by tptacek on Friday March 10, 2017 @05:51PM (#13842849)
Crypto is probably a better way to learn abstract algebra than the other way around, for whatever that's worth. You don't need more than a surface level understanding of abstract algebra to do fairly serious crypto work, but a lot of abstract algebra made more sense to me after a few years of crypto.
Re:Abstract Algebra (2016) [pdf] by Ixiaus on Friday March 10, 2017 @03:10PM (#13841681)
It has a lot of application in functional programming languages, thinking of my programs algebraically has had a meaningful effect on what feels like "clearer expression of thought" in my code.
Re:Abstract Algebra (2016) [pdf] by platform on Friday March 10, 2017 @04:46PM (#13842438)
abstract algebra is foundation for

a) arithmetic as applied to 'Classes'. Eg overloading arithmetic operators that work on custom classes -- is, in a way, what abstract algebra does .

b) Interval arithmetic. For example alen algebra applied to arithmetic of time intervals

c) relational database theory as relates to various ways to construct functions on relations.

d) type theory (see https://homotopytypetheory.org/book/ )

e) combinatorics and linear programming (basically being able to express recursive and generative constructs, and reason about them).

Re:Abstract Algebra (2016) [pdf] by Smaug123 on Saturday March 11, 2017 @11:14AM (#13845878)
Though note that HoTT is not the only approach to type theory; there are many others.
Re:Abstract Algebra (2016) [pdf] by AnimalMuppet on Friday March 10, 2017 @03:09PM (#13841676)
Integer arithmetic in hardware (and many languages) is a ring.

If I understand correctly, groups are the basis of some error correction codes.

Monads are used for many things in functional programming.

Re:Abstract Algebra (2016) [pdf] by umanwizard on Friday March 10, 2017 @10:27PM (#13844046)
Do you mean to say a finite ring? "Pure" integer arithmetic in math (without any notion of overflow or wrapping) is a ring also, so I'm not sure what distinction you're making by saying "in hardware".
Re:Abstract Algebra (2016) [pdf] by AnimalMuppet on Tuesday March 14, 2017 @11:56AM (#13868588)
Yes, a finite ring.

There are languages that overflow from hardware integers into some kind of BigNum automatically. Those languages are not finite rings. (Well, OK, they're finite in the sense that eventually the memory space will be exhausted...)

Re:Abstract Algebra (2016) [pdf] by umanwizard on Wednesday March 15, 2017 @04:34PM (#13879526)
yep, but they're still rings :)
Re:Abstract Algebra (2016) [pdf] by axlprose on Friday March 10, 2017 @04:05PM (#13842128)
One way to view it, is that all other fields with the word "algebra" in them, are applications of Abstract Algebra. That includes Linear Algebra, Relational Algebra, and Boolean Algebra, which you might already be familiar with and know their relevance to CS.
Re:Abstract Algebra (2016) [pdf] by Bahamut on Friday March 10, 2017 @03:08PM (#13841660)
Category theory is considered a field that is associated with algebraic skillsets.

Edit: Crypography is specifically associated with algebraic number theory.

Abstract algebra is also used in algebraic geometry, which also comes into play with facial recognition software, and maybe with fingerprinting as well.

Re:Abstract Algebra (2016) [pdf] by hackernewsacct on Friday March 10, 2017 @04:33PM (#13842315)
Every reply to my parent question has been excellent. What beginner resources do you recommend for learning category theory and its applications to programming?
Re:Abstract Algebra (2016) [pdf] by tomku on Friday March 10, 2017 @04:57PM (#13842523)
Re:Abstract Algebra (2016) [pdf] by mathgenius on Friday March 10, 2017 @04:50PM (#13842471)
I'm not sure there is any good resources for CT applied to CS.

But anyway, check this out: http://chris-taylor.github.io/blog/2013/02/13/the-algebra-of...

There's alot of category theory implicit in these ideas. You can learn the abstract approach later on, after you have seen a bunch of examples.

Re:Abstract Algebra (2016) [pdf] by ooqr on Friday March 10, 2017 @07:11PM (#13843266)
I'd suggest learning it via Haskell or maybe Scala if you've found programming helps your understanding of mathematics as I have. Learning via doing, internalizing by example, then diving deeper into the then-easier theory is how I like to go about things.
Re:Abstract Algebra (2016) [pdf] by posterboy on Saturday March 11, 2017 @07:44AM (#13845269)
the book in the article you are posting under, perhaps. just a hunch :)
Re:Abstract Algebra (2016) [pdf] by adenadel on Friday March 10, 2017 @03:16PM (#13841731)
Some of the applications mentioned in this book are:

-cryptography

-algebraic coding theory

-Burnside's lemma

-molecular symmetry

-design of software for parallel processors

-lattices and Boolean algebras applied to logic, circuit theory, and probability

-Galois theory

Re:Abstract Algebra (2016) [pdf] by madhadron on Friday March 10, 2017 @06:01PM (#13842902)
Off the topic of my head, pretty much everything to know about consistency in distributed systems boils down to semilattices.
Re:Abstract Algebra (2016) [pdf] by imh on Friday March 10, 2017 @04:45PM (#13842418)
Followup question: Are there good applied books that cover examples in broader fields than just crypto and coding theory?