EE 605 – ERROR CORRECTING CODES
Course offered in:
Spring 2021
Instructors:
Prof. Sibi Raj B Pillai
Course Content:
Fairly self-explanatory – messages sent through a medium are subjected to noise, leading to errors at the receiver; these messages are instead embedded within codewords that are less susceptible to errors or allow the errors to be identified, hence error correcting codes. Broadly, this course first covers some preliminaries relating to error correction, then moves on to describe various classes of codes and associated decoding techniques. According to the department website, this includes :
- Linear block codes
- Cyclic codes (BCH, Reed Solomon)
- Convolutional codes
All of this constitutes what is now called classical coding. Unprecedented advances in computation power over the last 30-odd years has led to the development of several new classes of codes – LDPC, turbo, polar – collectively called modern coding. It is likely that the instructor will cover these in some capacity as well.
Prerequisites:
There are no strict pre-requisites, but a good understanding of linear algebra will definitely be needed. A course in (digital) communication or information theory (if not done before, at least in parallel) will give the student more context and will them appreciate this course better.
There were no sophomores in the class when I did this course; I do not think they were prohibited from taking it. In any case, it is a good idea to send the instructor an email before registering for a course as a sophomore.
Feedback on Lectures:
Prof. Sibi ensured that all of us completely understood every single concept covered, by asking each of us if we were ready to move on. This meant that the lectures were slow and more often than not, some of the content planned for that lecture would spill over to the next, which is how a typical lecture began. We would then move on to what was scheduled for that lecture, starting with some motivation, then getting to the main idea. The rest of the lecture involved some examples or elaboration as the topic needed.
Feedback on Tutorials, Assignments and Exams:
The tutorials were easy and were discussed in the lecture as revision of the material covered. Assignments were not very straightforward, but referring to the suggested books helped. Exam questions were lengthy and open-ended (particularly the endsem); lectures and assignments were enough preparation to be able to answer them satisfactorily.
Difficulty:
Overall, this course is not very difficult. Depending on who the instructor is, the level of rigour expected will vary – this could make the course seem to be more difficult than it is. The level of difficulty also varies across different codes – some require no preliminaries and can be completely understood in half a lecture, while others could take a few lectures to cover enough preparatory material before getting to the main content. But everything is covered starting from the basics, making this a comfortable course.
Grading Statistics:
Study Material and References:
Slides were made available (with the annotations made during the lectures) along with the recordings of the lectures (thanks, online sem). There are several excellent books, each offering something different. Here are the ones I found most useful:
Lin, Shu, and Daniel J. Costello. Error control coding. Vol. 2. Prentice Hall, 2004. (a complete reference)
McEliece, Robert J. The Theory of Information and Coding: A Mathematical Framework for Communication. 1977.(covers classical coding well)
Richardson, Thomas J, and Rüdiger Urbanke. Modern Coding Theory. 2009. (best for modern coding, but very difficult to digest)
Madhow, Upamanyu. Fundamentals of Digital Communication. Cambridge: Cambridge University Press, 2012. (good for modern coding, in simple, easy-to-follow language)
Advanced courses that can be taken after this:
EE 754 – Advanced Error Correcting Codes is, as the name suggests, a natural follow-up to EE 605, covering modern coding almost exclusively as per the department website.
Takeaways from the course:
This is an introductory course to the world of coding theory. Anyone who is interested in digital communication should definitely do this course, along with EE 708 – Information Theory and Coding.
Review by – Adway Girish (adwaygirish@iitb.ac.in)
Sponsored Content