When information is transmitted, errors are likely to occur. This problem has become increasingly important as tremendous amounts of information are transferred electronically every day. Coding theory examines efficient ways of packaging data so that these errors can be detected, or even corrected. The traditional tools of coding theory have come from combinatorics and group theory. Since the work of Goppa in the late 1970s, however, coding theorists have added techniques from algebraic geometry to their toolboxes. In particular, by re-interpreting the Reed-Solomon codes as coming from evaluating functions associated to divisors on the projective line, one can see how to define new codes based on other divisors or on other algebraic curves. For instance, using modular curves over finite fields, Tsfasman, Vladut, and Zink showed that one can define a sequence of codes with asymptotically better parameters than any previously known codes. This monograph is based on a series of lectures the author gave as part of the IAS/PCMI program on arithmetic algebraic geometry. Here, the reader is introduced to the exciting field of algebraic geometric coding theory. Presenting the material in the same conversational tone of the lectures, the author covers linear codes, including cyclic codes, and both bounds and asymptotic bounds on the parameters of codes. Algebraic geometry is introduced, with particular attention given to projective curves, rational functions and divisors. The construction of algebraic geometric codes is given, and the Tsfasman-Vladut-Zink result mentioned above is discussed. No previous experience in coding theory or algebraic geometry is required. Some familiarity with abstract algebra, in particular finite fields, is assumed. However, this material is reviewed in two appendices. There is also an appendix containing projects that explore other codes not covered in the main text.