This course is an introduction to error-correcting codes. Such codes
have been employed with spectacular success by the communications and
data-storage industries to achieve performance trade-offs that would
have been otherwise impossible. Error-correcting codes are studied in
a branch of science known as coding theory, whose goal is to improve
our ability to communicate and preserve information. In addition to
improving our daily lives, results from coding theory are being used
extensively in theoretical computer science, combinatorics, algebra,
and other branches of mathematics.
Coding theory today comes in several distinct flavors. The classic
algebraic coding theory deals with error-correcting codes constructed
using algebraic or combinatorial methods. Such codes usually guarantee
the correction of a certain number of errors, regardless of what these
errors are (they might have been chosen by an adversary). Moreover,
algebraic error-correcting codes often come equipped with efficient
algebraic decoding algorithms. This course will deal exclusively with
algebraic codes. Prominent examples of such codes include Reed-Solomon,
BCH, and Reed-Muller codes.
In contrast, iterative, or probabilistic, codes usally do NOT guarantee
anything, although their performance can be predicted with high probabi-
lity in the ensemble-average sense. This performance often happens to
be quite close to the fundamental limits established by Shannon in his
classic 1948 paper. Prominent examples of such probabilistic codes
include LDPC codes, turbo codes, and repeat-accumulate codes. Some of
these codes will be covered in the subsequent course (ECE259B).
You are welcome to browse carefully through this web site. There is
a lot of useful material online. Specifically, all homeworks, homework
solutions, and the midterm exam (with its solutions) will be posted
here, as will be important announcements.
Good luck and have fun in ECE259A!
--Your ECE259A instructors