Coding Theory in MATHEMATICA Igor Gachkov and Kenneth Hulth Applications of the theories of Error-Correcting Codes have in recent years risen tremendously. Thus it is today hardly possible to imagine engineers working with data transmission and related fields without basic knowledge of coding/decoding of information. The possibilities of quantifying information with electronic equipment is developing rapidly, supplying the specialists working in communication theory with more and more sophisticated methods for circuit realization of concrete algorithms in Coding Theory. During preceding years courses in Coding Theory have been considered only for students on postgraduate level. This is due to the complexity of the mathematical methods used in most codes, such as results from abstract algebra including linear spaces over Galois Fields. With the introduction of computers and computer algebra the methods can be fairly well illustrated. The authors have developed a course, Coding Theory in Mathematica, using the wide range of capabilities of MATHEMATICA. The course was given during the autumn 1994 at Jonkoping University, Sweden, on undergraduate level and with a minimum of prerequisites. The hands on sessions were based on a package of application programmes/algorithms, developed to illustrate the mathematical constructions, used in coding theory to encode and decode information. We will in our seminar present some of our hands-on material, used to construct Block Codes with means of algebraical methods. We first present the basic concepts of coding theory, such as hamming distance, generator and parity check matrices, binary linear codes and group codes. We will then use some basic results from matrix algebra and linear spaces to construct code words from the information we want to send. Due to noise in the channel of transmission the received words may differ from the code words which was sent, and the very aim of coding theory is to detect and correct possible errors. In the linear codes (the code words having group structure) the encoding is accomplished by multiplying the information word (seen as a vector) with a generator matrix, whereas the encoding process starts with multiplication of the received word with the parity check matrix. Within the cyclic codes it is preferable to work with generator and parity check polynomials instead of matrices, and the code words here form a polynomial ring. With algebraic extensions of the field Zp by irreducible (over Zp) polynomials, the final step is taken into the BCH-codes, which have a rich algebraical structure. The application programmes in the package support the learning processes by illustrating the algorithms in the mathematical constructions. The rich variety of manipulations in the algebraical structures, the possibility to vary the parameters used in concrete cases and the simplicity to construct concrete codes with MATHEMATICA should strengthen the understanding of the mathematical ideas used in coding theory.