This volume offers a terse, highly formal exposition of the relation between the four subjects named in the title: codes (transformations of a stream of information), cryptology (transformations that seek to hide the original content), curves (specifically, algebraic geometry, the study of zeros of multivariate polynomials), and computer algebra packages. Each chapter is written by a subset of the authors, and their names are ordered by the number of chapters to which each has contributed.
An extensive discussion of coding in general occupies the first eight chapters, more than half of the book. Chapter 1 motivates information transformation with a discussion of error-correcting codes, which can transmit information without loss over a noisy channel. It introduces the fundamental notion of a linear code, whose basic idea is to map messages to vectors in an appropriate vector space. From the point of view of error recovery, if the available vectors are sufficiently distinct, a corrupted message can be recovered by associating it with the nearest vector. Based on this underlying model, the rest of the book looks at different ways one can generate and manipulate such a mapping.
Chapter 2 discusses how to construct new codes from old ones and a variety of approaches to computing bounds on how many such new codes can be constructed. Chapter 3 reviews methods for enumerating the weight spectrum of a code, that is, the number of nonzero elements in each vector in the vector space.
Two important classes of codes are cyclic codes (in which any cyclic permutation of elements in a codeword yields another codeword) and polynomial codes (whose codewords are interpreted as polynomials with the code elements as coefficients). Chapters 4 and 5 discuss these classes of codes.
Chapter 6 reviews algebraic algorithms for decoding, and chapter 7 discusses the computational complexity of decoding.
Chapter 8 relates codes as mathematical objects to a number of other objects, including graphs, matroids, lattices, and polynomials.
The motivating example for codes in the first eight chapters is error correction, but information transformations are also used to prevent unauthorized access to information. Chapter 9 introduces cryptology, the second main topic in the title. In chapter 10, the idea that the elements of codewords can be viewed as coefficients of polynomials motivates the use of Gröbner bases, a transformation of a system of polynomials with useful computational properties, in analyzing both codes in general and cryptographic systems in particular.
Chapter 11 brings in the third term in the title, curves. Once a code is viewed as a system of polynomials, it is natural to think of the polynomials as curves and to examine their intersections and zeroes.
While the algebraic approach promoted throughout the book is theoretically elegant, it can be computationally fatiguing. Chapter 12 reviews four computer algebra packages: Singular, Magma, GAP, and Sage. Then it gives examples of manipulating error-correcting codes, cryptographic codes, and Gröbner bases with these packages, based largely on working some of the examples provided in earlier chapters.
The book includes a bibliography of 364 items, an integrated index, and exercises for each chapter. In spite of the exercises, it is more a reference book than a textbook, providing little exposition for the uninitiated. It will be mainly of interest to readers who already understand the concepts discussed and want a formal summary and integrative overview of the domain.