The aim of this book is to teach the reader the topics in algebra which are useful in the study of computer science. In a clear, concise style, the author present the basic algebraic structures, and their applications to such topics as the finite Fourier transform, coding, complexity, and automata theory. The book can also be read profitably as a course in applied algebra for mathematics students.The aim of this book is to teach the reader the topics in algebra which are useful in the study of computer science. In a clear, concise style, the author present the basic algebraic structures, and their applications to such topics as the finite Fourier transform, coding, complexity, and automata theory. The book can also be read profitably as a course in applied algebra for mathematics students.1 Number theory.- 1.1 Divisibility.- 1.2 Congruences.- 1.3 The theorems of Fermat, Euler and Wilson.- 1.4 Squares and the quadratic reciprocity theorem.- 1.5 The Gaussian integers.- 1.6 Algebraic numbers.- 1.7 Appendix. Primitive elements and a theorem by Gauss.- Literature.- 2 Number theory and computing.- 2.1 The cost of arithmetic operations.- 2.2 Primes and factoring.- 2.3 Pseudo-random numbers.- Literature.- 3 Abstract algebra and modules.- 3.1 The four operations of arithmetic.- 3.2 Modules.- 3.3 Module morphisms. Kernels and images.- 3.4 The structure of finite modules.- 3.5 Appendix. Finitely generated modules.- Literature.- 4 The finite Fourier transform.- 4.1 Characters of modules.- 4.2 The finite Fourier transform.- 4.3 The finite Fourier transform and the quadratic reciprocity law.- 4.4 The fast Fourier transform.- Literature.- 5 Rings and fields.- 5.1 Definitions and simple examples.- 5.2 Modules over a ring. Ideals and morphisms.- 5.3 Abstract linear algebra.- Literature.- 6 Algebraic complexity theory.- 6.1 Polynomial rings in several variables.- 6.2 Complexity with respect to multiplication.- 6.3 Appendix. The fast Fourier transform is optimal.- Literature.- 7 Polynló$