  Reed-Muller (RM) codes are among the oldest, simplest and perhaps most
ubiquitous family of codes. They are used in many areas of coding theory in
both electrical engineering and computer science. Yet, many of their important
properties are still under investigation. This paper covers some of the recent
developments regarding the weight enumerator and the capacity-achieving
properties of RM codes, as well as some of the algorithmic developments. In
particular, the paper discusses the recent connections established between RM
codes, thresholds of Boolean functions, polarization theory,
hypercontractivity, and the techniques of approximating low weight codewords
using lower degree polynomials. It then overviews some of the algorithms with
performance guarantees, as well as some of the algorithms with state-of-the-art
performances in practical regimes. Finally, the paper concludes with a few open
problems.
