Welcome to CS250/EE387!

Algebraic Error Correcting Codes, Stanford University, Winter 2018.

THIS COURSE WAS OFFERED WINTER 2018 AND IS NO LONGER ACTIVE. Please visit here to see if there is a more recent version.

Course Overview

Instructor: Mary Wootters

TA: Reyna Hulett

When and where? T/Th 10:30-11:50am, Sapp Center for Science Teaching and Learning (STLC), Room 119.

Course Description: Introduction to the theory of error correcting codes, emphasizing algebraic constructions and diverse applications throughout computer science and engineering. Topics include basic bounds on error correcting codes; Reed-Solomon and Reed-Muller codes; list-decoding, list-recovery and locality. Applications may include communication, storage, complexity theory, pseudorandomness, cryptography, streaming algorithms, group testing, and compressed sensing.

Prerequisites: Linear algebra, basic probability (at the level of, say, CS109, CME106 or EE178) and "mathematical maturity" (students will be asked to write proofs). Familiarity with finite fields will be helpful but not required.

What do I need to do? Three homework assignments and a final project.


  • (2/15) Added a clarification to Problem 2.1(b) and fixed a typo in Problem 2.4(a).
  • (2/14) Project guidelines posted.
  • (2/14) Added an assumption that |C| is larger than d on problem 2.2.
  • (2/8) Problem set 3 is posted. Hooray!
  • (1/30) Small typo in Exercise 1.4 fixed: a 4 got changed to a 3.
  • (1/25) Problem set 2 is posted. Yay!
  • (1/18) Added a note on Problem 5(d).
  • (1/11) Problem set 1 is posted. Have fun!


The following is a tentative schedule. It is subject to change, especially the lectures that have not happened yet.

Tuesday Thursday
1/9. Lecture 1: Logistics and the basics of coding theory.

Lecture Notes

Homework 0 "released".

1/11. Lecture 2: Intro to finite fields and linear codes; Hamming and GV bounds.

Lecture Notes

Optional reading: Forney's introduction to finite fields.

Homework 1 released.

1/16. Lecture 3: More linear codes. Application: McEliece Cryptosystem; Asymptotics, Hamming and GV bounds.

Lecture Notes

Homework 0 due.

1/18. Lecture 4: Singleton and Plotkin bounds; Reed-Solomon Codes!!!

Lecture Notes

1/23. Lecture 5: More Reed-Solomon Codes! Welch-Berlekamp and Berlekamp-Massey algorithms

Lecture Notes

1/25. Lecture 6: Binary codes! BCH codes, code concatenation.

HW1 due; HW2 released.

Lecture Notes

1/30. Lecture 7: More Concatenated Codes and the Zyablov bound

Lecture Notes

2/1. Lecture 8: Algorithmic applications of RS codes: streaming, compressed sensing, group testing

Lecture Notes

2/6. Lecture 9: Random errors and efficiently achieving capacity on the BSC

Lecture Notes

2/8. Lecture 10: List-Decoding! (List-decoding capacity theorem and the Johnson bound)

Lecture Notes

Relevant reading: Extensions to the Johnson Bound (Guruswami and Sudan 2001)

HW2 due; HW3 released.

2/13. Lecture 11: Guruswami-Sudan Algorithm

Lecture Notes

2/15. Lecture 12: List recovery and applications

Lecture notes for Lectures 12 and 13

2/20. Lecture 13: List recovery and applications II

Lecture notes for Lectures 12 and 13

2/22. Lecture 14: Folded Reed-Solomon Codes

HW3 due; start thinking about your projects!

Lecture notes

2/27. Lecture 15: Reed-Muller Codes

Lecture notes

3/1. Lecture 16: Locality.

Project proposals due.

Lecture notes

3/6. Lecture 17: Local list-decoding and applications (Goldreich-Levin, Kushilevitz-Mansour)

Lecture notes

3/8. Lecture 18: Applications in storage: Regenerating codes from RS codes

Lecture notes

3/13. Lecture 19: Guest lecture: Marco Mondelli 3/15. Lecture 20: Guest lecture: Marco Mondelli
3/20. -- 3/22. Final projects due (by email to marykw)