than GL2, Hilbert and Siegel modular forms, trace formulas, p-adic modular
forms, and modular abelian varieties, all of which are topics for additional
books. We also rarely analyze the complexity of the algorithms, but instead
settle for occasional remarks about their practical eﬃciency.
For most of this book we assume the reader has some prior exposure to
modular forms (e.g., [DS05]), though we recall many of the basic defini-
tions. We cite standard books for proofs of the fundamental results about
modular forms that we will use. The reader should also be familiar with
basic algebraic number theory, linear algebra, complex analysis (at the level
of [Ahl78]), and algorithms (e.g., know what an algorithm is and what big
oh notation means). In some of the examples and applications we assume
that the reader knows about elliptic curves at the level of [Sil92].
Chapter 1 is foundational for the rest of this book. It introduces congru-
ence subgroups of SL2(Z) and modular forms as functions on the complex
upper half plane. We discuss q-expansions, which provide an important
computational handle on modular forms. We also study an algorithm for
computing with congruence subgroups. The chapter ends with a list of ap-
plications of modular forms throughout mathematics.
In Chapter 2 we discuss level 1 modular forms in much more detail. In
particular, we introduce Eisenstein series and the cusp form Δ and describe
their q-expansions and basic properties. Then we prove a structure theorem
for level 1 modular forms and use it to deduce dimension formulas and give
an algorithm for explicitly computing a basis. We next introduce Hecke
operators on level 1 modular forms, prove several results about them, and
deduce multiplicativity of the Ramanujan τ function as an application. We
also discuss explicit computation of Hecke operators. In Section 2.6 we make
some brief remarks on recent work on asymptotically fast computation of
values of τ. Finally, we describe computation of constant terms of Eisenstein
series using an analytic algorithm. We generalize many of the constructions
in this chapter to higher level in subsequent chapters.
In Chapter 3 we turn to modular forms of higher level but restrict for
simplicity to weight 2 since much is clearer in this case. (We remove the
weight restriction later in Chapter 8.) We describe a geometric way of view-
ing cuspidal modular forms as differentials on modular curves, which leads
to modular symbols, which are an explicit way to present a certain homol-
ogy group. This chapter closes with methods for explicitly computing cusp
forms of weight 2 using modular symbols, which we generalize in Chapter 9.
In Chapter 4 we introduce Dirichlet characters, which are important
both in explicit construction of Eisenstein series (in Chapter 5) and in de-
composing spaces of modular forms as direct sums of simpler spaces. The