My teaching resources are available here.

In “Iterative decoding convergence conditions for variable length error correcting codes and for their relatives” we provide an intuitive explanation of why a free distance of two is a necessary condition for supporting iterative decoding convergence to an infinitesimally low probability of error.

RobProb provides C++ data types for representing probabilities, which are handy for implementing Soft-In Soft-Out (SISO) decoders.

BlockBasedPrecoder provides a C++ class for simulating block-based precoders.

Matlab EXIT charts allows you to draw EXtrinsic Information Transfer (EXIT) charts in Matlab.

Matlab DCMC capacity provides Matlab code for calculating the capacity of various channels, employing various modulation schemes.

C fixed-point BCJR provides C code for the BCJR decoder used in fixed-point UMTS turbo codes.

Matlab RA code provides functions for the iterative decoding of serially concatenated repeat and accumulate codes.

Matlab Huffman code provides Matlab code for generating a Huffman codebook for a specified set of symbol probabilities.

Matlab UMTS Turbo code provides Matlab code for plotting the BER, EXIT chart and iterative decoding trajectories of the UMTS turbo code.

PolarCode provides IT++ functions for the training, encoding and decoding of polar codes.