This post is based on this lecture by Ryan O’Donnell, a part of the playlist for the awesome CS Theory Toolkit course.
A video version is here.