This text contains sufficient material for a one-semester course in mathematical algorithms, for second year mathematics students. The course requires some exposure to the basic concepts of discrete mathematics, but no computing experience.

The aim of this course is twofold. Firstly, to introduce the basic algorithms for computing exactly with integers, polynomials and vector spaces. In doing so, the student is expected to learn how to think algorithmically and how to design and analyze algorithms.

Secondly, to provide a constructive approach to abstract mathematics, algebra in particular. When introducing the elements of ring and field theory, algorithms offer concrete tools, constructive proofs, and a crisp environment where the benefits of rigour and abstraction become tangible.

We shall write algorithms in a straightforward language, which incorporates freely standard mathematical notation. The specialized constructs are limited to the if-structure and the while-loop, which are universal.

Exercises are provided. They have a degree of difficulty comparable to that of examination questions. Some of the exercises consist of short essays; in this context, the notation [ ] indicates that mathematical symbols are not permitted in the essay. Starred sections contain optional material, which is not examinable.