Out of all the topics treated by an introductory abstract algebra course, it is the subject of fields — especially finite fields — that enjoys perhaps the brightest spotlight in terms of real-world applications, as well as some of the most interesting theory. This book is an ingenious treatment of finite fields in which both the theory and three general areas of application are presented both with appropriate depth and intriguing breadth, with a commendable amount of interconnections between them and all contained in a very compact volume.

The first chapter of the book is an extensive treatment of the theory of finite fields and polynomials over finite fields. The first half of the chapter studies the structure of finite fields, focusing on finite fields as vector spaces and bases for those vector spaces. The second half of the chapter deals with polynomials over finite fields and gives many interesting results that one does not normally find in the typical undergraduate algebra text.

Chapter 1 assumes that the reader has experience with groups, rings, and fields equivalent to what one might obtain in a two-semester, or thorough one-semester, course in abstract algebra. Since not all interested readers have that background, the book contains an appendix that serves as a crash course in abstract algebra. This appendix is quite amazing in the way it develops just enough algebra — no more, no less — to learn from the rest of the book. Most readers of this book would do well to start with this appendix, regardless of their background.

Following the introductory chapter, the book proceeds through three main areas of application: combinatorics, algebraic coding theory, and cryptography. The combinatorics chapter centers around the study of Latin squares, a concept familiar with anybody who has ever done a Sudoku puzzle and which has a number of real-world applications.

The coding theory chapter develops all the concepts using the material in Chapter 1 and ending with a nice connection between codes and Latin squares. Finally, the cryptography chapter, after motivating the ideas behind basic cryptographic primitives, gives examples of cryptosystems which use finite fields. The treatment includes an overview of the AES cryptosystem, an interesting system based on mutually orthogonal Latin squares (again, making a nice connection between the applications in the book), a public-key system based on quadratic polynomials over a finite field, and ending with a brief treatment of key-exchange protocols, the discrete logarithm, and elliptic curve cryptography.

I enjoyed the way in which this book manages both breadth and depth in a relatively small amount of pages. It is amazing how far one can go with finite fields, in both theory and applications, if one knows just the basics of abstract algebra. And all the algebra basics are contained in the book in a highly streamlined way (the proof of Lagrange's Theorem, for example, does not invoke cosets or quotient groups at all). I think this book would make an excellent sourcebook for either a second-semester course in algebra or an independent study for students who have completed a one-semester course in algebra. I appreciated, too, the ways in which the authors weave the applications together, using Latin squares not only as a subject of study unto itself but also as a recurring example in both coding theory and cryptography.

Another strength of this book is the relative independence of the three application chapters. So, for example, a reader wanting to undertake a study of coding theory can cover the appendix, parts of chapter 1, and then the coding theory chapter without needing the other two chapters — but proceeding to the other two chapters if the connections provided by the authors prove intriguing enough. Indeed, I can see the book being used primarily in this way, covering the theory and then studying one or two of the applications.

However, perhaps the main weakness of this book is that the theory in Chapter 1 goes deep — *very* deep — but the full depth is not always necessary for subsequent chapters, and it is not made clear to the reader just how much theory from Chapter 1 is really necessary for subsequent topics. Indeed, it seemed to me that some of the application chapters only use a fraction of the material in Chapter 1, although a reader would think she would have to get through it all in order to make it to Chapter 2. I worry that an an inexperienced reader would get bogged down in Chapter 1 and lose interest before making it to the applications. In future editions, my hope is that Chapter 1 might be split into two or three separate chapters of increasing theoretical depth and that there be some kind of chart indicating how much theory is needed to undertake an application. Professors using this book for an undergraduate course might need to do this themselves for now.

The text tends to be somewhat light on examples which can serve as touchstones for students who might struggle with the abstraction. The cryptography chapter, in particular, would benefit from a few worked-out examples of the cryptosystems in use; AES gets especially short shrift, as there are no meaningful specifics given about that important cryptosystem at all. The authors have done a commendable job of using a unifying concept — the Latin square — throughout the second half of the book to provide cohesion among the applications. The book would benefit just as much from having unifying examples of concepts throughout individual chapters to make things more concrete.

Overall, with the caveats given above, this is a well-written and wide-ranging book on a subject that doesn't usually get the level of treatment it deserves in a typical undergraduate course. Advanced students, and even professional mathematicians, will find this book to be an engaging and full-bodied tour of finite fields. Other readers will also find it to be well-written, and should find the applications interesting and well-chosen, but should be advised that it is quite dense and will require some background work. But I believe the effort will pay off richly.

Robert Talbert is Associate Professor of Mathematics and Computing Science at Franklin College. His interests include cryptography, ring theory, evangelism for the Mac OS X operating system, writing at his blog Casting Out Nines, and being at the beck and call of his wife and two daughters.