This course provides an introduction to error-correction, signal processing, and inference on "graphs." We will start with graph-based error correcting codes and associated decoding methods and continue on to topics such as signal processing on graphs and compressive sensing. Viewing (and designing) error-correction codes and decoding algorithms from a graph-based viewpoint revolutionized the theory and practice of error correction starting in the 1990s. While the initial focus of the course is on error correction, the techniques used to analyze the performance of these codes, and the algorithmic methods used to decode them, connect to diverse areas of statistical inference including machine learning and statistical physics. Topics concerning error-correction coding in past offerings of the course have included turbo, low-density parity-check (LDPC), "fountain," spatially coupled, and Polar codes; iterative decoding techniques such as the sum-product algorithm; code design techniques; and threshold analysis via density evolution. Topics concerning other applications of signal processing and inference on graphs have included signal processing on graphs ("graph-SP"), compressed sensing, and connections between graphical inference and convex optimization.
The error-correction portion of the course is designed to complement ECE1501H, but that course is not a prerequisite. Students in engineering, the computer sciences, and math will find this course interesting.