Do groups, rings and fields have practical applications in CS? If so, what are some? This is ONE thing about my undergraduate studies in computer science that I haven't been able to 'link' in my real life (academic and professional). Almost everything I studied I've observed be applied (directly or indirectly) or has given me Aha! moments understanding the principles behind the applications. 
Groups, Rings and Fields have always eluded me. I always thought they were useful (instinctively) but failed to see where/how. Are they just theoretical concepts without practical applications? I hope not. So what are their applications, especially in the field of computer science. No matter how arcane/remote their use I still want to know.

Most of the examples above are about groups. Here are two books about using rings and ideals in computing along with other theoretical algebraic geometry concepts.


*

*Using Algebraic Geometry http://www.amazon.com/Using-Algebraic-Geometry-Graduate-Mathematics/dp/0387207333

*Ideals over a Non-Commutative Ring and their Application in Cryptology http://link.springer.com/chapter/10.1007%2F3-540-46416-6_41
