If you want to measure and describe the number of occurrences of something, use an integer. If you want to measure and describe the amount of something, use a rational number. If you want to measure and describe the symmetry of a structure, use a group.
When programmatically dealing with objects that contain symmetry - e.g. physical objects like a cube, a set of identical resources like a fleet of lorries - having an understanding of group theory allows you another layer of abstraction in your computation, potentially greatly reducing runtime or memory consumption.
Any teacher not mentioning "shape" when explaining group theory is either a bad teacher or a bad teacher.
Here is a great book about Abstract Algebra. It should be about right for this course and it's free! :D http://abstract.ups.edu/
As we say in the article, we are trying to put together a better platform for teachers to use when they want to teach with more freedom and with more rights to their intellectual property rights than they might have when doing it through a university, and so that they can have many parts of the teaching process automated in order to be able to focus on actually playing the roles of educators.
We're running a Kickstarter to help us get our prototype into beta, and we appreciate any and all support.
What's the pitch?
Here are a few nice books I'm currently using:
http://www.amazon.com/Groups-Their-Graphs-Mathematical-Libra... (available as eBook from http://www.maa.org/ebooks/nml/NML14.html)