You will learn some of the Python computer programming language and selected topics in “coding theory”. The material presented in the actual lectures will probably not follow the same linear ordering o these notes, as I will probably bring in various examples from the later (mathematical) sections when discussing the earlier sections (on programming and Python). I wish I could teach you all about Python, but there are some limits to how much information can be communicated in one semester! We broadly interprete “coding theory” to mean error-correcting codes, communication codes (such as Gray codes), cryptography, and data compression codes. We will introduce these topics and discuss some related algorithms implemented in the Python programs. A programming language is a language which allows us to create programs which perform data manipulations and/or computations on a computer. The basic notions of a programming language are “data”, “operators”, and “statements.”