Harvard CS 229r: Essential Coding Theory (Spring 2020)

General Info:
  • Lecturer: Madhu Sudan;  MD 339; email: first name at cs dot harvard dot edu; Office Hours: MW 4:30-5:30pm
  • Teaching Fellow: Chi-Ning Chou: MD 138, email: chiningchou at g.harvard.edu; Office hours: TuFr 4:30pm-5:30pm (MD 1st floor common space).
  • Lecture Time and Location: MW 3pm-4:15pm in Northwest B108.

Other links for the course:

  • Course announcement: Brief description of the course.
  • Grading policy.
  • Piazza site: All announcements will be routed through this site - so please sign up right away!!
  • Canvas site: You will need access to Canvas to submit your problem sets.


  • 02/07/20: PS1 released (tex, pdf). Due 02/21/20.
  • 02/04/20: All future lectures will be in Northwest B108.
  • Problem set 0 is now out. (tex, pdf). Submit solutions here on canvas. (Email madhu your solutions if you don't have canvas access.)
  • Make sure you've signed up for piazza and know how to access your canvas account. If any of these is a problem, reach out to Madhu or Chi-Ning.
  • Please sign up for scribing! Signup instructions and sheet here. Template for scribing here (preamble, sample.tex).

Topics (Very Tentative), Calendar and Handouts:

  • Lecture 01 (Mon. 01/27): Introduction. Hamming's Paper. Codes, Distance, Examples, Limits and Algorithms. Notes from 2008 (use these notes for technical content; not for grading policy etc.!). Reading [Chapter 1 and Chapter 2 from the text.]. Scribe notes (tex, pdf).
  • Lecture 02 (Wed. 01/29): Shannon's Theorems. Noiseless coding. Noisy Coding. Shannon Capacity. Notes from 2008. Reading [Chapter 6]. Scribe notes (tex, pdf).
  • Lecture 03 (Mon. 02/03): Converse to Shannon's theorem. Random codes. Linear codes. Gilbert-Varshamov theorems. Asymptotics of error-correcting codes. Notes from 2008. Reading [Chapter 1 and Chapter 4]. Scribe notes (tex, pdf).
  • Lecture 04 (Wed. 02/05): Simple Impossibility Results for Codes. (Pigeonhole argument, packing argument, geometric arguments). Reading [Chapter 4 and Chapter 8]. Notes from 2008, Scribe notes (tex, pdf).
  • Lecture 05 (Mon. 02/10): Algebraic codes: Reed-Solomon codes. Concatenated codes. (Notes from 2008). Readings [Chapter 8, Chapter 5].
  • Lecture 06 (Wed. 02/12): Codes from univariate polynomials contd.: Forney, Justesen. BCH codes. Codes from Multivariate polynomials: Reed-Muller, Hadamard. Notes from 2008 (Reed-Muller etc., BCH).
  • Monday 02/17: Presidents' Day Holiday
  • Lecture 07 (Wed. 02/19): Dual BCH codes. Algebraic Geometry Codes. Notes from 2013. Scribe notes (tex, pdf). 
  • Lecture 08 (Mon. 02/24): TBD
  • Lecture 09 (Wed. 02/26): Algorithmic problems in Coding theory. Decoding Reed-Solomon Codes. Reading materials.
  • Lecture 10 (Mon. 03/02): Decoding Concatenated Codes. Achieving Shannon Capacity. Notes from 2008. Scribe notes (tex, pdf).
  • Lecture 11 (Wed. 03/04): List-decoding: Combinatorics. List-decoding Reed-Solomon Codes. Notes from 2008. Scribe notes (tex, pdf).
  • Lecture 12 (Mon. 03/09): Folded Reed-Solomon Codes and List-decoding. Notes. No scribe notes, but the notes from 2013 should be pretty close to what we did (tex, pdf).
  • Lecture 13 (Wed. 03/11): Graph-theoretic codes (Gallager, Tanner, Sipser-Spielman). Linear time encoding and decoding. Notes from 2008. Scribe notes (tex, pdf).

  • Sat. 3/14- Sun 3/22: Spring break
  • Lecture 14 (Mon. 03/23): Graph-theoretic codes II (Alon-Luby construction, Guruswami-Indyk). Notes. Scribe notes (tex, pdf).
  • Lecture 15 (Wed. 03/25): Polar codes. Introduction to the notion. Encoding + Decoding. References:
  • Lecture 16 (Mon. 03/30): Polar codes. Shannon capacity with polynomial convergence. Notes. Scribe notes (tex, pdf).
  • Lecture 17 (Wed. 04/01): TBD
  • Lecture 18 (Mon. 04/06): Locality in coding: Introduction, Locally Recoverable Codes. Notes. Scribe notes (tex, pdf).
  • Lecture 19 (Wed. 04/08): Locality in coding: Locally Decodable Codes. Notes. Scribe notes (tex, pdf).
  • Lecture 20 (Mon. 04/13): Locality in Coding: Locally Testable Codes. Notes.
  • Lecture 21 (Wed. 04/15): Local Testability of Tensor Products and Low-degree polynomials. Notes
  • Lecture 22 (Mon. 04/20): Codes and derandomization: Limited independence, epsilon-bias, almost independence. Notes.
  • Lecture 23 (Wed. 04/22): Interactive Coding - I.
  • Lecture 24 (Mon. 04/27): Interactive Coding - II.
  • Lecture 25 (Wed. 04/29):  Codes and complexity: Pseudorandom generation from one-way functions, Hardness amplification. Notes. Scribe notes (tex, pdf).

Reference Materials: