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.

Problem Sets:

  • There were 6 psets in the course + 1 (diagnostic) pset 0. Email madhu if you would like access to them for teaching your course.


  • 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, 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): Bounds on codes continued: List-decoding, Elias-Bassalygo bound. Musing on bounds. Reed-Solomon codes. (Notes from 2008). Readings [Chapter 8, Chapter 5]. Scribe notes (tex, pdf).
  • Lecture 06 (Wed. 02/12): Algebra review. Reed-Solomon Codes. Extension fields. Wozencraft ensemble. Notes from 2008 (Reed-Muller etc., BCH). Scribe notes (v1.tex, v1.pdf, v2.tex, v2.pdf).
  • Monday 02/17: Presidents' Day Holiday
  • Lecture 07 (Wed. 02/19): Concatenated codes. Justesen codes. Mutltvariate polynomials. Reed-Muller codes. Notes from 2013. Scribe notes (tex, pdf).
  • Lecture 08 (Mon. 02/24): Reed-Muller codes - some choices of parameters. Hadamard codes, Hamming codes. BCH codes. Scribe notes (tex, pdf).
  • Lecture 09 (Wed. 02/26): Algebraic Geometry Codes. Decoding Reed-Solomon Codes. Reading materials.
  • Lecture 10 (Mon. 03/02): Reed-Solomon decoding (contd.). Reed-Solomon list-decoding. Scribe notes (tex, pdf).
  • Lecture 11 (Wed. 03/04): Decoding concatenated codes. List-decoding to capacity - the question. Scribe notes (tex, pdf).
  • Lecture 12 (Mon. 03/09): Folded Reed-Solomon Codes and List-decoding. Notes. Additional Notes. Scribe notes (tex, pdf).
  • Lecture 13 (Wed. 03/11): Graph-theoretic codes (Sipser-Spielman codes). Linear time encoding and decoding. Notes from 2008. No scribe notes this time, but here are notes from previous years (tex, pdf).
  • Sat. 3/14- Sun 3/22: Spring break
  • Lecture 14 (Mon. 03/23): Graph-theoretic codes I (Spielman codes). My notes. Scribe notes (tex, pdf).
  • Lecture 15 (Wed. 03/25): Graph-theoretic codes II (Alon-Luby construction, Guruswami-Indyk). Notes. Scribe notes (tex, pdf).
  • Lecture 16 (Mon. 03/30): Polar codes. Introduction to the notion. My notes. (See also Chapter  11 from book). Scribe notes (tex, pdf).
  • Lecture 17 (Wed. 04/01): Polar codes (contd): Polarization Theorem + Algorithmic Efficiency. My notes. Scribe notes (tex, pdf).
  • Lecture 18 (Mon. 04/06): Polar codes (contd): Proof of Polarization theorem. My notes. Scribe notes (tex, pdf).
  • Lecture 19 (Wed. 04/08): Locality in coding: Definitions of LRCs, LDCs, LTCs. Locally Recoverable Codes. My notes. Scribe notes (tex, pdf).
  • Lecture 20 (Mon. 04/13): Locality in Coding: Reed-Muller Codes and Locality. My notes. Scribe notes (tex, pdf).
  • Lecture 21 (Wed. 04/15): Locality in Coding: Multiplicity Codes and KMRS Codes. My notes. Scribe notes (v1.tex, v1.pdf, v2.tex, v2.pdf).
  • Lecture 22 (Mon. 04/20): Codes and derandomization: Limited independence, epsilon-bias, almost independence. My notes. Scribe notes (v1.tex, v1.pdf, v2.tex, v2.pdf).
  • Lecture 23 (Wed. 04/22): Coding in Complexity: Hardcore predicates and Worst-case to average-case reductions. My notes. Scribe notes (tex, pdf).
  • Lecture 24 (Mon. 04/27): Interactive Coding. My notes. Scribe notes (v1.tex, v1.pdf, v2.tex, v2.pdf).
  • Lecture 25 (Wed. 04/29): Coding for editing errors. Course wrap-up. My notes and slides. Scribe notes (tex, pdf).

Reference Materials: