EE5161 is an advanced course on coding theory. Students are assumed to have had 
an introductory course on error control coding such as EE5160 or EE5142. I will
be covering a selection of topics from two books: i) Channel codes by Ryan and Lin and ii) Iterative error correction by S. Johnson. 
As the title suggests the emphasis is on modern codes and by that we mean the developments that began circa 1990s with 
the discovery of turbo codes and rediscovery of LDPC codes. Our focus will be on LDPC codes and turbo codes. 
Depending on the time some additional topics such as finite geometry LDPC codes, polar codes, spatially coupled LDPC 
codes might be covered. There will be 2--3 projects in this course along with some matlab assignments. Some programming 
knowledge is essential. At the end of this course you should be able to design and simulate the performance of LDPC and 
turbo codes. More details about the syllabus, grading  policy can found in the 
course webpage 
https://courses.iitm.ac.in
Textbooks: 
Channel codes, Classical and Modern by  W. Ryan and S. Lin.
Iterative Error Correction by S. Johnson 
 
References:
Modern coding theory by R. Urbanke and T. Richardson
Course topics. 
- Introduction to modern coding theory  
- Common channels and their capacities 
- Review of block codes
- LDPC codes (constructions, decoding and design) 
-  Review of convolutional codes 
- Turbo codes (constructions, decoding and design) 
-  Factor graphs 
- Density evolution
- EXIT charts
- Spatially coupled LDPC codes, polar codes, codes for standards (time permitting)
	Grading policy (Tentative)
40% Projects, 10% Miniquizzes+assignments, 20% Midsem, 30% Finals.
 Midsem TBD
 Endsem 19 Nov 2015
Lectures
 03 Aug Lecture  1: Introduction 
 04 Aug Lecture  2: Common discrete channels and capacities
 05 Aug Lecture  3: AWGN channels 
 10 Aug Lecture  4: Algebra review
 11 Aug Lecture  5: Linear block codes review
 12 Aug Lecture  6: Decoding linear codes
 14 Aug Lecture  7: Shannon's theorem for BSC
 17 Aug Lecture  8: Limitations of bounded distance decoder
 18 Aug Lecture  9: Factor graphs
 19 Aug Lecture 10: Factor graphs
 21 Aug Lecture 11: Decoding using factor graph framework
 24 Aug Lecture 12: LDPC codes
 26 Aug Lecture 13: Sum product algorithm (SPA probability domain),
 miniquiz-1
 31 Aug Lecture 14: SPA log domain
 01 Sep Lecture 15: SPA variations, erasure filling algorithm
 04 Sep Lecture 16: SPA approximations 
 07 Sep Lecture 17: Erasure decoding and  bit flipping algorithms
 09 Sep Lecture 18: LDPC codes: degree distributions, miniquiz-2
 11 Sep Lecture 19: LDPC code constructions
 14 Sep Lecture 20: LDPC code constructions
 15 Sep Lecture 21: Thresholds via density evolution
 16 Sep Lecture 22: Density evolution for BEC (irregular codes), BSC (regular)
 21 Sep Lecture 23: Design of capacity achieving codes (BEC)
 22 Sep Lecture 24: Density evolution for BiAWGN
 23 Sep Lecture 25: Gaussian approximation (regular LDPC codes)
 28 Sep Lecture 26: Gaussian approximation (irregular LDPC codes)
 29 Sep Lecture 27: EXIT charts for LDPC codes
 30 Sep Lecture 28: EXIT charts for LDPC codes
 05 Oct Lecture 29: Wrapup LDPC codes, miniquiz-3
 06 Oct Lecture 30: Convolutional codes
 07 Oct Lecture 31: Convolutional codes
 09 Oct Lecture 32: Structural properties of convolutional codes 
 12 Oct Lecture 33: Decoding convolutional codes
 13 Oct Lecture 34: BCJR algorithm (probability domain) 
 14 Oct Lecture 35: BCJR algorithm (log domain) 
 16 Oct Lecture 36: Turbo codes (Parallel concatenated convolutional codes)
 21 Oct Lecture 37: Turbo codes 
 23 Oct Lecture 38: Performance of block codes
 26 Oct Lecture 39: Performance of convolutional codes
 28 Oct Lecture 40: Performance of turbo codes, miniquiz-4
 30 Oct Lecture 41: Density evolution and EXIT charts for turbo codes
 02 Nov Lecture 42: EXIT charts for LDPC codes, turbo codes project
 03 Nov Lecture 43: Serial concatenation
 04 Nov Lecture 44: Serial concatenated convolutional codes
 06 Nov Lecture 45: Wrapup