Information theory, error control coding and cryptography are the three load-bearing pillars of modern digital communication systems. All the three topics are vast, and there are many good books that deal with these topics individually. In this book, an attempt has been made to incorporate all the important concepts of information theory, error control coding and cryptography in-between the two covers, without making the covers too far apart. This is intended as a simple and lively book on the subject. This book results from my teaching of different topics on information theory and coding at Indian Institute of Technology, Delhi. While writing this book, I had to take a decision regarding how mathematical the book should be. Quoting Richard W. Hamming: "Mathematics is an interesting intellectual sport but it should not be allowed to stand in the way of obtaining sensible information about physical processes". Too mathematical a book has the potential danger of scaring away students who lack a strong background in mathematics. On the other hand, the use of mathematics cannot be reduced beyond a limit, if the concepts in information theory and error control coding have to be studied with a certain amount of rigor. But then, life is all about striking a balance. I have tried to traverse the path of golden mean in this book. Mathematics has been used wherever necessary, and only to the extent that it is essential. Intuitive explanations have been provided wherever possible. I also believe that teaching by example is a very effective method of instruction. Therefore, as soon as a new concept is introduced, I have tried to provide at least one numerical example. How to Read This Book This book has been written to be both a lively introduction as well as a fairly detailed reference to the fascinating world of information theory, coding and cryptography. The entire book has been divided into three logical parts:
Part I—Information Theory and Source Coding,
Part II—Error Control Coding (Channel Coding), and
Part III—Coding for Secure Communications.
Part I contains two chapters—Chapter 1 deals with the concept of information and its efficient representation. Efficient representation of information leads to data compression. The chapter also introduces the concept of run length coding, the rate distortion function and the design of an optimal quantizer. The chapter concludes by giving a brief introduction to image compression. Chapter 2 deals with the concepts of a communication channel and the channel capacity. This chapter tries to answer the question: How many bits per second can be sent over a channel of a given bandwidth and for a given signal to noise ratio? It also brings out the need for error control coding. Part II contains five chapters, all on error control coding—Chapter 3 introduces the reader to the class of linear block codes. Linear block codes are useful, instructive and simple. Encoding and decoding strategies are discussed for this class of codes. The notions of perfect codes, optimal linear codes and maximum distance separable (MDS) codes are also introduced. Chapter 4 deals with cyclic codes, a sub-class of linear block codes. Cyclic codes are particularly useful for burst error correction. Fire codes, Golay codes and Cyclic Redundancy Check (CRC) codes are discussed as specific examples of cyclic codes. The chapter concludes with a section on the circuit implementation of cyclic codes. Chapter 5 takes the reader to the world of Bose–Chaudhuri Hocquenghem (BCH) codes, a very powerful class of multiple error correcting codes. The Reed-Solomon codes, a sub-class of BCH codes, is also discussed in this chapter. Chapter 6 takes a look at convolutional codes, which are essentially codes with memory. The concept of Trellis codes is introduced to the reader and the Viterbi decoding technique is discussed in detail. Some known good convolutional codes are also studied. Finally, the reader is given a flavor of the not-so-old Turbo codes. Chapter 7 on Trellis Coded Modulation (TCM) talks about the combined coding and modulation schemes. TCM encoding and decoding are discussed. The reader also learns how to design TCM schemes for additive white Gaussian noise channels as well as fading channels. Part III contains a chapter on Cryptography—Chapter 8 looks at yet another application of coding, i.e. secure communications. The chapter discusses both the secret key and public key encryption techniques using specific examples. Other techniques such as one-way hashing and encryption using chaos functions are also discussed. The chapter concludes with a note on the politics of cryptography. I have tried to include numerical examples as and when required. Each chapter ends with a concluding remark, which contains brief historical notes describing the origins of the important results and contributions. Also, there is a telegraphic summary at the end of each chapter, which can be used as a ready reference, or a quick search mechanism for a particular formula or definition, or simply a confidence builder prior to an exam. The end of the chapter problems should help the enthusiastic reader crystallize the concepts discussed in the text. I have also added computer-based exercises at the end of each chapter. It is recommended that these computer problems should be made a part of learning this subject. I have tried my best to free the book from all errors. Unfortunately there does not exist a foolproof error control technique for that! I have tried to include all the important, practical and interesting concepts related to this area. Comments from the readers regarding errors, omissions and other constructive suggestions are welcome at rbose@ee.iitd.ac.in Finally, I would like to quote Blaise Pascal, who said, "The last thing one knows when writing a book is what to put first". Ranjan Bose |