This chapter gives an introduction to algebraic coding theory and a survey of constructions of some of the well known classes of algebraic block codes such as cyclic codes, BCH codes, Reed-Solomon codes, Hamming codes, quadratic residue codes, and quasi-cyclic (QC) codes. It then describes some recent generalizations of QC codes and open problems related to them. Also discussed in this chapter are elementary bounds on the parameters of a linear code, the main problem of algebraic coding theory, and some algebraic and combinatorial methods of obtaining new codes from existing codes. It also includes a section on codes over Z4, integers modulo 4, due to increased attention given to these codes recently. Moreover, a recently created database of best known codes over Z4 is introduced.