Elements of Algebraic Coding Theory