Contents

Preface

This text is based on notes which have been used in teaching at Texas A& M University - Commerce, and at the US Naval Academy, for several semesters. The notes were used to to teach two different courses. One, a first course in modern algebra, was taught to students who have only had a ``fundmentals in mathematics'' course and a matrix theory course. (So, they knew, for example, mathematical induction and how to compute eigenvalues of a matrix). Applications were emphasized and it had a once-a-week computer lab. This course covered some of chapters 1,2,3,4 and 5. A second course was a course on error-correcting codes. This course covered chapters 2 and 3 in more detail, and parts of chapter 6. It also had a once-a-week computer lab.

So, on one hand this book aims to teach some undergraduate modern algebra with an emphasis on applications. These applications are mostly focused on error-correcting codes, the Rubik's cube and cryptography. Special projects and applications sections in the text develop some of these. The special projects are suggestions for the student taking a course which requires a term paper. Topics include: Latin squares, continued fractions, Diffue-Hellman key exchange, RSA for polynomials, tiling problems, campanology (bell-ringng), and special constructions involving the Rubik's cube. One does need a Rubik's cube to follow the sections on the Rubik's cube, any more than one needs bells to follow the section on campanology. We do not discuss solution strategies or go into the mathematics of the Rubik's cube, as in [J1] for example, but we occasionally use it as a teaching tool to illustrate an idea.

Each chapter has exercises in GAP (a free computer algebra system, [Gap]) and MAGMA (a non-commercial but not free computer algebra system, [MAGMA]). Instructions for using GAP and MAGMA may be found in the appendices at the end of the book. The web site [Gap] contains detailed instructions for installing GAP on windows, mac, and unix/linux computers. Both GAP and MAGMA have extensive capabilities to do modern algebra. Since many of the applications are oriented to communications, it is natural to use computers to understand these applications. In fact, for coding theory and cryptography, many systems use such large parameters that working practical exercises ``by hand'' is virtually impossible and computers are not just useful but required. Moreover, most chapters end with some ``special projects'', which might be useful for a student class project. Some related MAPLE and MATHEMATICA code can be found on the author's websites, though for various reasons we decided not to include them in this book.

On the other hand, this book can be used to teach an undergraduate course in error-correcting codes. The GAP and MAGMA exercises are especially helpful for giving the student a grasp of examples. After such a course, the student should be prepared to move onto a more serious treatment, such as [MS].

The text begins with elementary number theory and algebraic properties of the integers. Modular arithmetic especially is covered. Here the reader finds applications to the RSA cryptosystem, linear feedback shift registers, and the Diffie-Hellman key exchange, for example.

The next chapter builds on the first by analogy: The polynomials are analogous to the integers and quotient rings are analogous to modular arithmetic. In fact, some proofs in this chapter are almost exactly the same as the analogous theorems in the first chapter. Properties of quotient rings are covered, with an eye towards applications to cyclic error-correcting codes and linear feedback shift registers. There is a short section on Gröbner bases, which have shown to be extremely useful in applications to a variety of topics. We restrict ourselves to a few very simple applications. ``Nimbers'' and factorization techniques for polynomials are covered as special topics.

The third chapter introduces error-correcting codes. Basic topics, such as check matrices, generator matrices, and syndrome decoding are covered. Special codes such as the Hamming codes and cyclic codes are also covered. Cyclic codes are a very broad class of codes which includes, for example Reed-Solomon codes, the codes used on todays CDs. Reed-Solomon codes are briefly discussed as well. More codes are covered in the special topics section and in the computer exercises.

The fourth chapter presents some material on permutations needed for group theory. Some applications to campanology and the Rubik's cube are discussed. Another application: the Nokia 7160 cell phone has a game called ``rotation'', §4.7 gives some useful moves to help solve this game. (You don't need the cell phone to play rotation - numbered pieces of paper on a table work fine.)

The next chapter, on group theory, discusses the theory of groups in more detail. The ``standard treatment'', which emphasizes the classification of groups, is put aside in favor of a treatment which emphsizes examples and computations. Cyclic groups, the general linear group $ GL(n,\mathbb{R})$ and the symmetric group are examples which are emphasized. The Cayley graph of a group, homomorphisms, and quotient groups are introduced. The automorphism group of a linear error-correcting code and more campanology and the theory of the Rubik's cube are discussed as applications. The computer exercises for both chapter 4 and chapter 5 are put together at the end of this chapter.

In chapter 6 more advanced topics in error-correcting codes are presented. Since some codes are best introduced after knowing some group theory, they are defined here. Other codes, such as the Goppa codes and the low density parity check codes, do not need group theory but were too advanced to fit naturally into chapter 3. The computer exercises explore these interesting codes in more detail.

Some of chapters 4 and 5 borrow heavily from one of the author's previous book, [J1]. As with [J1], all of that author's royalties go directly to charity.

Nokia and Rubik's cube are registered trademarks (TM). We shall omit the symbol (TM) for readability.

We thank Gene Berg, Don Newhart, and Amin Shokrolahi for answering lots of questions on coding theory. Of course, any errors remaining are entirely the authors' responsibility.



David Joyner 2007-09-03