Coding for Data and Computer Communications.

By David Salomon. Published by Springer Verlag March 2005. ISBN 0-387-21245-0. LCCN TK5102.94 .S35 2005. xv+548 pages.

A BibTeX style file and an Errata list are available.

Written in late 2003 and completed in February 2004, the book consists of three parts for error-control codes, codes for compressing data, and secure codes (for data encryption). The third part includes chapters on data hiding (steganography).

From the Preface.

This book is an attempt to bring the three disciplines of data compression, error-control codes, and cryptography and data hiding to the attention of the general public. As a result, it is mostly nonmathematical and does not attempt to be complete. It is naturally divided into three parts, each of which discusses the most important approaches, methods, and techniques that are currently employed in one of these fields to make the storage and transmission of data fast, secure, and reliable.

The book has been written mostly as a professional text for those interested in the basic problems and methods of data coding. It can, however, also serve as a textbook in a course dealing with aspects of data coding. Some features that enhance this aspect of the book are the many exercises sprinkled throughout the text, the proposed projects for self-study (Appendix D), and the Glossary.

Table of Contents

Book Cover
Preface vii

Part I: Channel Coding 1

1 Error-Control Codes 3
2 Check Digits for Error Detection 35

Part II: Source Codes 59

3 Statistical Methods 67
4 Dictionary Methods 111
5 Image Compression 133

Part III: Secure Codes 197

6 Basic Concepts 199
7 Monoalphabetic Substitution Ciphers 213
8 Transposition Ciphers 227
9 Polyalphabetic Substitution Ciphers 243
10 Stream Ciphers 269
11 Block Ciphers 289
12 Public-Key Cryptography 311
13 Data Hiding 341
14 Data Hiding in Images 365
15 Data Hiding: Other Methods 417

Part IV: Essential Resources 445


A Symmetry Groups 447
B Galois Fields 451
B.1 Field Definitions and Operations 451
B.2 Polynomial Arithmetic 459
C Cyclic Redundancy Codes 461
D Projects 465

Answers to Exercises 471

Glossary 503

Bibliography 523

Index 533
The short (1 page) PDF file found here proposes an improvement to Equation (2.3) on page 38. This approach was communicated to me in May 2005 by John Motil. Another original ISBN algorithm from John Motil, in the form of a binary tree, communicated to me in November 2006, is summarized in the JPEG file located here. John has more material on nifty algorithms at and

Review (SIGACT, vol 40, #4, 2009)

In about 450 pages, the author covers (in considerable depth) a breadth of topics in the three themes of reliability, efficiency, and security in data storage and transmission. The book is, therefore, a substantial read. In addition to basic knowledge in combinatorics, number theory, abstract algebra, and statistics and probability-to understand the examples in the book, one requires a background in computer science as some examples employ core CS concepts such as finite state machines and some data structures (e.g., trees). From an instructional design point of view, however, the book can be reasonably used by an independent learner (given adequate background in computer science and mathematics) as well as a basic or reference textbook for a university course. This is due to the progressive development of concepts, the exercises that are in-line with the text (with answers at the end of the book), and the interesting visualization of some of the abstract concepts (e.g, the geometric method of projective planes to generate codes-discussed at the end of chapter 1) and other visual components and illustrations. Examples are given in almost every section of the book. An entire appendix is dedicated to projects which can be proposed as a practical component of a course using this book as a standard or a reference text or as a further research guide for interested readers.

To do justice to the thoughtfully structured and presented wealth of information in this book, I would say that in an attempt to communicate the essential features of Salomon's "Coding for Data and Computer Communications," this review is-in the squeezing sense of compression-a very compressed one.

Last Updated 3 October 2009.