In this talk, we will look at some efficient algorithms to recover a message from a corrupted encoding of it. This is a phenomenon that happens all around us, from a phone call to scanning QR codes. We will consider encodings based on low-degree polynomials. We will start with some basic definitions in error-correcting codes, and then we will see few technical lemmas that is useful in designing our algorithms. If time permits, we will also see a cool application of these algorithms for hardness amplification in complexity theory. The talk is aimed at general math/CS audience.