Codes were invented to detect and correct transmission errors caused by noise on a communication channel. In this talk, we will specifically look at linear codes as well as the dual code and the matrices that allow us to convert between the two. For linear codes, the error correcting capabilities of a code are determined by the weights, in particularly the minimum weight, of the codewords. We will discuss these weights and how to find their minimum value as well as introduce the MacWilliams Theorem, which connects the weights of a code to the weights of its dual