Does anyone have any experience using either GAP or Magma in a first abstract algebra course?

The context here is a course for sophomore/junior math majors that focuses primarily on groups. I'm curious:

  • What are the advantages (and disadvantages) of introducing either GAP or Magma in such a course? For example, does it somehow make groups more concrete for students?

  • What sorts of homework problems involving GAP/Magma would be reasonable to assign?

  • How much instruction do the students need in GAP/Magma before they can solve meaningful problems? Is it something they can figure out on their own, or is it necessary to spend a class day in a computer lab?

  • Does anyone have any resources along these lines that they would be willing to share? References to books or articles would also be appreciated.

  • 3
    $\begingroup$ Have you tried Nathan Carter's Group Explorer? See also his book: Visual Group Theory. $\endgroup$
    – J W
    Apr 21, 2014 at 7:02
  • $\begingroup$ You may be interested to know that Arkadii Slinko's recent Algebra for Applications uses GAP. That said, the focus isn't on groups and it's an applied algebra course rather than a general introduction to algebraic structures. That's why I'm posting this as a comment instead of an answer. For more about the book, see my answer to my question about applications of abstract algebra outside of mathematics. $\endgroup$
    – J W
    Oct 12, 2020 at 9:03

2 Answers 2


I TA'd a first course in abstract algebra during my senior year of undergrad. The professor wanted a computational flavor to the course, so we introduced Magma right off the bat. We wanted to allow the students to experiment with permutations without needing to actually do large computations themselves. As part of my contribution to the course, I was put in charge of the Magma side of things, both making the assignments and teaching them how to use the software.

After a few in class lectures on Magma syntax and a couple ungraded, basic-syntax mini-assignments, I gave the students this, which they finished in about two weeks. I had to help them a lot by email. Everyone finished the second problem once they figured out the list syntax. In retrospect I think the first problem was a bit too difficult. I had expected the students to have at least a little programming experience, and it turned out most of them didn't, so the Monte Carlo type solution was not intuitive. They just weren't comfortable enough with conditionals and control structures to use them to tackle unfamiliar concepts.

I gave two more small projects like this, but I don't have copies online. The second one involved verifying the Chinese remainder theorem, calculating isomorphism classes of abelian groups of some given orders, and taking quotients of abelian groups. The third one was about alternating groups and conjugacy classes.

It turned out that the students found Magma to be more trouble than it was worth. They didn't learn as much from the assignments as I had expected them to. The goal had been to allow students to see more complex group structure in action without actually having to go through the trouble of calculating everything on their own, but it seems that this difficulty was simply replaced by the difficulty of learning the new language. I had expected they would enter an "exploratory phase" after learning the basic tools where they learned a whole lot of group theory (because that's what happened to me after I learned Magma), but it didn't happen.

So, my experience suggests that even several days in the computer lab was not sufficient to introduce Magma. I suspect it may only be practical to use Magma for a first course in group theory when you know that students have at least some previous programming experience. If they do, I still think it could be a great way to learn. It also might be worth considering use in a first year graduate level course in abstract algebra, where the students are committed enough to put in the time to learn programming concepts if they don't know how to yet. (Also, at least for me, the most educational part of learning Magma was messing around with the SmallGroups package, which is probably out of the scope of a first year course in group theory.)

P.S., to answer your final question, the only resource I have ever personally used to learn Magma has been the Magma handbook, which has been so tremendously helpful that I have never felt the need to seek an alternative.

EDIT: I remembered that I had made some Magma notes for my students, a quick reference and some short programs we went over in class.


I wouldn't normally post this as an answer but I don't have enough rep to leave a comment. This will mainly address your last bullet point since I can only speak from the perspective of a student.

In my first abstract algebra course we used the open-source textbook by Judson (see link below since I can only post two links due to rep). It had a large collection of Sage exercises for the end of each chapter and these were due (roughly) once per week. Much of what Sage implements is done as a wrapper to GAP. The exercises, along with significant commentary, can be found at


Everyone in the course had seen at least a one semester introductory programming course. A significant portion of the class had taken linear algebra from a professor who also integrates Sage everywhere. If you're interested you can see the linear textbook.

Although the exercises could prove incredibly frustrating at times, in hindsight I do feel they were worth the time investment. I don't feel that any of the group theory ideas were made more concrete through the Sage exercises, but the general comfort level I was forced to develop with Sage has lead me to return to it whenever I want to play around with an idea for a counterexample, or experiment with a theorem I don't fully understand on first reading, etc.

  • $\begingroup$ Can I ask if the intro to programming course was a required prerequisite? Or was this just a coincidence? $\endgroup$ Apr 22, 2014 at 3:22
  • 1
    $\begingroup$ The math major at my university requires CSCI161. I know it is an intro to CS and programming using Java but can't say much beyond that as I haven't personally taken it. I wouldn't call myself a programmer but I have worked as a UNIX sysadmin for around 14 years so I had already written my fair share of small programs. $\endgroup$ Apr 22, 2014 at 3:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.