*Algebraic Geometry Codes: Advanced Chapters* is a sequel to an earlier book by the same authors, *Algebraic Geometric Codes: Basic Notions *so I will start this review by recalling just a small amount about where that book left off and this one begins.

A major focus of *Basic Notions* is the study of linear codes that come from algebraic curves. Let \( X \) be a projective, smooth, absolutely irreducible algebraic curve defined over a finite field \( \mathbb{F}_{q} \). Let \( \mathcal{P}= \left\{ P_{1}, P_{2}, \ldots P_{n} \right\} \) be a subset of the \( \mathbb{F}_{q} \) -rational points of \( X \). Let \( D \) be a divisor on \( X \) whose support does not include any of the \( P_{1} \) and let \( L(D) \) denote the Riemann-Roch space of \( D \). Consider the evaluation map

\( \operatorname{Ev}_{\mathcal{P}} \colon L(D) \to \mathbb{F}_{q}^{n}, \;\; f \to \left( f(P_{1}), \ldots, f(P_{n}) \right) \)

The image of this map is a linear code \( C = (X, \mathcal{P}, D)_{L} \subset \mathbb{F}_{q}^{n} \). Using the Riemann-Roch theorem one can estimate the dimension and minimum distance of this code. The authors show that if one wants "good codes" from this construction, that is, linear codes with large dimension and minimum distance relative to their length, one needs curves over finite fields with many rational points.

Some of the highlights of *Basic Notions* are directly related to the above construction and the study of curves with many rational points. Let \( N_{q}(g) \) be the maximum number of points on a curve of genus \( g \) defined over \( \mathbb{F}_{q} \) and let \( A(q) = \limsup_{g \to \infty} \frac{N_{q}(g)}{g} \). The authors introduce zeta functions of curves over finite fields and discuss the Hasse-Weil bound on \( N_{q}(g) \) and some of its improvements. They give a proof of the Drinfeld-Vlǎduţ bound, which states that \( A(q) \leq \sqrt{q}-1 \). They briefly introduce Garcia-Stichtenoth Towers of function fields and explain how these towers prove that \( A(q) = \sqrt{q} − 1 \) when \( q \) is an even power of a prime. They show how families of curves with many rational points lead to the existence of good codes, proving the Tsfasman-Vlǎlduţ-Zink bound.

So if that’s all in *Basic Notions*, what’s in *Advanced Chapters*? The first major topic tackled by the authors is the study of curves with many rational points. In *Basic Notions* the authors give hints about where these curves come from, but in the first big section of *Advanced Chapters* (Chapters 5–7), we get a much fuller picture of this subject. In the introduction to Chapter 5 they list methods to construct such curves:

- Modular curves of various types;
- Class field theory constructions;
- Explicit recursive curve towers;
- Curves coming from Artin-Schreier or Kummer covers;
- Other constructions.

The authors discuss each of these approaches, pursuing multiple directions and perspectives at the same time. For example, they explain more geometric aspects of curves along with results about algebraic function fields. The material presented here nicely complements references like *Algebraic Function Fields and Codes* by Stichtenoth

and *Algebraic Curves over a Finite Field* by Hirschfeld, Korchmáros, and Torres.

In the Preface, the authors say that they are especially interested in connections between different parts of mathematics that come up in this area. It shows! I will give a few examples where the authors highlight connections to other topics. Chapter 10 is about sphere packings and the analogy between good linear codes and dense lattice packings. It gives a different perspective on this topic than Ebeling's nice book *Lattices and Codes*. Chapter 9 focuses on the decoding of algebraic geometry codes, a topic of much interest at the boundary of pure and applied mathematics. Finally, Chapter 12 gives applications to several areas, including cryptography, algorithms for matrix multiplication, and others.

I do not think that it is necessary for a reader to have mastered the material of the first book in order to find *Advanced Chapters* to be a valuable reference and an interesting read. While there is a helpful Appendix recalling some basic definitions and results of *Basic **Notions*, in order to get much out of this book the reader should probably be familiar with some algebraic geometry and the basics of how one constructs codes from algebraic curves. *Basic Notions* gives a quick account of the kind of algebraic geometry needed to understand algebraic geometry codes, but I do not think it is the best place for a reader to go to learn the theory of algebraic curves for the first time. It would serve as a very helpful refresher and supplement for a reader who has seen this material before, but maybe not in a while and not with this same kind of focus. Similarly, *Advanced Chapters* gives a rather fast account on some major topics in number theory and algebraic geometry. The presentation here is enough for a non-expert reader to understand what is going on at a high level, but to really understand the details of something like the theory of modular curves or class field theory, it would be important to supplement this text with additional references. Even when things get relatively more challenging, the authors make an effort to show how this material has concrete applications. For example, Section 11.3 gets into some intersection theory on surfaces, but the authors then show how one can use this material to construct explicit examples of codes with interesting properties.

I think that researchers working in this area will find this book to be a very valuable resource. In *Basic Notions*, the authors say that part of their audience is intended to be algebraic geometers looking for new areas to apply their knowledge. *Advanced Chapters* could be very impactful in helping these readers to realize that there are many interesting concrete problems where their expertise may be relevant. Less algebraically focused members of the coding theory community might find the results of this book to be good motivation to pick up some more algebraic tools. One potential audience for this book is graduate students in algebraic geometry and number theory looking for research directions. The technical barriers to entry for the subjects discussed here are relatively lower than in many other parts of arithmetic geometry (for example, the authors manage to avoid any discussion of schemes) and the authors emphasize concrete problems and examples and explicit constructions. While *Basic Notions* could be used as a textbook for a graduate course, I think of *Advanced **Chapters* as more of a reference or text for self-study (for example, there are no exercises).

One very nice aspect of *Advanced Chapters* is that different readers can take different things from it. Many of the sections are relatively independent of each other. I particularly enjoyed Chapter 9 on list decoding of algebraic geometry codes, Section 10.4 on Mordell-Weil

lattices, the first half of Chapter 11 on codes from multidimensional varieties, and Section 12.5 on locally recoverable codes, just to name a few. Your favorite sections are likely to be different from mine. The authors have written a book that should offer at least something to a wide audience of number theorists, algebraic geometers, and coding theorists, and that will be very valuable to researchers working in this area. Because there is so much here, including some results that are pretty recent, topics are sometimes covered quickly. The Historical and Bibliographical Notes at the end of each chapter give helpful pointers for how to dive more deeply into these subjects. Reading *Advanced Chapters* has made me aware of several papers that I am excited about reading for my own research. I think this kind of thing will be common for readers of this book.

Nathan Kaplan is an Associate Professor at University of California, Irvine. He is a number theorist who is very interested in arithmetic statistics of varieties over finite fields and connections to the theory of error-correcting codes.