The book gives an easy introduction into the theory of algebraic curves over finite fields to the extent necessary for the basic definitions of the theory of codes from algebraic geometry. Afterwards, it introduces the notion of bilinear complexity, and goes on to design bilinear algorithms for multiplication in finite fields using algebraic curves over finite fields.