A survey of algebraic coding theory