Explore UCD

UCD Home >


A Concrete Approach to Learning Algebraic Coding Theory Using a Computer Algebra System



This Learning Enhancement project has been funded through the HEA and the National Forum for the Enhancement of Teaching and Learning.

PROJECT TITLE: A Concrete Approach to Learning Algebraic Coding Theory Using a Computer Algebra System
PROJECT COORDINATORS: Associate Professor Eimear Byrne
COLLABORATORS: Mr Giuseppe Cotardo
MODULE: An Introduction to Coding Theory
STUDENT COHORT: Undergraduate Stage 3 & 4 Mathematics and Applied & Computational Maths; Postgraduate HDip Mathematical Studies


Coding theory is a major component of Applied Algebra. It has many applications in the mathematics of communications and has many links with other scientific disciplines, such as electrical engineering and computer science. Coding theory arises in almost every imaginable digital communications and storage system. In UCD, it is taught at the undergraduate level in the module MATH30180 An Introduction to Coding Theory.

Making connections between theory and computation is a valuable skill in coding theory, which is itself an application of linear algebra, combinatorics and abstract algebra. However, constructing meaningful examples and computations is not feasible to do simply by hand calculations, so educators and researchers in the topic frequently use computers to create examples and to explore new concepts.  From the learner’s point of view, example generation is an extremely effective way of gaining concrete insight into abstract ideas. Why not then give students in coding theory the skills to do computations and code constructions for any parameters they choose that are still feasible with a standard PC?

The Magma software package is a computer algebra system with widespread use among researchers in coding theory and was a natural choice for the purposes of this project. Magma is a high-level programming language, with many purpose-built libraries designed for computations in algebra, number theory, geometry and combinatorics.


This initiative aimed to introduce the students to the Magma computational algebra system and especially aimed to enhance student learning of algebraic coding theory.

Using the software, students were challenged to explore different error-correcting codes, their properties, and some associated decoding algorithms for parameters that would not be feasible without a computer.

The primary goal of this approach was to give students the necessary skills for them to do independent experimentation in coding theory in order to attain a concrete understanding of abstract concepts, such as existence results, weight distributions, code constructions, polynomial algebra, encoding, decoding, and related concepts involving finite fields. 

There were a number of secondary aims. One was to give students with very little programming experience the opportunity to learn the basics, or to increase their proficiency. The fundamental principles learned as part of this project could be applied in other high-level languages. The project also gave the opportunity for students coming from different cohorts to work together, and share their different skills while conducting the group projects.

The Innovative Approach

We held a 12-hour workshop, delivered over 3 days during the teaching break.

The content of the workshop was coordinated with the theoretical content of MATH30180. In this way, students were able to make links between their understanding of the theory of error correcting codes that they acquired during the module and their implementations using Magma.

The first session of each day were devoted to the basic programming using Magma software. The tutor, Giuseppe Cotardo, introduced the topic, described the relevant  Magma libraries and functions, and explained how to use them. In the second session of each day, the participants worked to implement code themselves and build up their own collection of programmes and examples. These small projects were submitted daily. We designed a selection of projects of varying levels of difficulty, each focussing on a different aspect of algebraic coding theory. Participants chose longer group projects to do autonomously, which were submitted at the end of the semester. Each group also gave a final presentation.

Full details of the implementation can be read in a separate report.


This initiative added a concrete dimension to strengthen the teaching of an abstract topic.

It gave students the opportunity to gain experience in programming and to develop new skills that can be applied in different areas and in different projects, such as the final year project.

We were extremely luck to have completed the workshop the day before the university closed in March 2020 due the pandemic. It was unfortunate that the necessary restrictions made it impossible for students to meet in person while doing their group work, and similarly we could not offer the same support for these projects. At that time both staff and students were on a high learning curve regarding remote collaboration and learning. However, all the projects were completed, almost all to a very high standard, and the final presentations were done via Zoom. These were also excellent.

At the end of the semester, students were asked to fill a survey on the quality of the workshop and scope to give suggestions on how to improve it in future.

Overall, 72% of participants recommended that the workshop should run again in the future. About half of the students agreed that they gained a better understanding of coding theory via using Magma. Some 90% of participants found the group project to be beneficial, while 82% agreed that it gave them an opportunity to explore a coding theoretic topic more deeply. Just 45.5% of students thought that sufficient time was dedicated to each project and the same percentage thought that the overall duration of the workshop was sufficient. Finally, 91% of participants agreed that the teaching in the workshop stimulated their interest in the subject.


For more detailed information see An Introduction to MAGMA for Coding Theory.