The book is divided into four main chapters:

• the first chapter “Foundations of Coding” is an introduction to the notion of code. It contains the mathematical background, necessary to manipulate the codes and the coding operations. Through this chapter, the reader will understand the constraints of the transmission of information, starting from historical examples and eventually learning advanced techniques. The knowledge of some historical aspects is pedagogically useful to work first on simple structures. In cryptology, history is also essential for efficient protection against the whole range of known attacks. The principle is always to start from examples of codes, showing step by step why some mathematical notions are useful so that the codes are short, safe, and efficient. While the other chapters describe recent, elaborate and currently used protocols for coding, this one provides the foundations of this activity. Simple objects from probability theory, algebra or algorithmic are introduced along the lines of this chapter, when they become necessary.

• the second chapter “Information theory and compression” is dedicated to information theory and data compression to carry out a deeper and more exhaustive survey of these principles, from the understanding of why compression is theoretically possible, to examples of compression codes which are commonly used in computer science and in every day life for storing and exchanging music and videos (gzip, gif, png, jpeg, jpeg2000, MPEG etc.).

• the third chapter “Cryptology” focuses on extending the encoding scheme to cases in which the transmitted information contains a secret while the transmitted message can be read by anyone. However, only the recipient must be able to recover the information it contains, that is, the original message. The applications are obviously numerous, for both military and commercial uses. Cryptology - literally “science of secret” - consists of two main components, namely cryptography, which deals with studying and building processes for information encryption, and cryptanalysis, which deals with analyzing (or attacking) ciphered texts in order to recover the hidden information. In this chapter, we present how to build secure systems, and this requires the knowledge of defense as well as attack techniques, in order to develop a global strategy of security. Of course, we provide through this chapter a study of the main systems and attacks, together with details on several usual protocols for secure information exchanges.

• The fourth chapter “Error detection and correction” explains how to deal with the possible distortions on the message induced by the transmission channel. More precisely, we provide a deeper analysis of error detection or error correction techniques, not only from a theoretical point of view but also by describing commonly met codes.

A final chapter at the end of the book provides a practical conclusion to encoding from a general perspective.