This course starts with basics in error correcting. Properties of linear codes are discussed thereafter followed by Shannon’s theorem on the existence of good codes. Weight distribution of the dual of a binary linear code, group characters and codes, the theorems of Macwilliams, Krawtchouk polynomials are also covered. Perfect codes, the Golay codes and the Mathieu groups are discussed. Some elementary facts of finite geometry, codes and their related designs are also discussed. Hadamard codes are covered. Overview of some classical constructions of error correcting codes: BCH-codes, Reed-Solomon codes, Reed-Muller codes, Quadratic-residue codes. Combining constructions of codes is discussed. Association schemes, the Hamming scheme and the Johnson scheme are covered. Codes in graphs are also discussed.