Rebecca Meier and Ambuj Dewan made large improvements to module 4 of this course. Xin Ha, Shaoxiong Wang, and Klaus Kostenbauer helped review earlier versions of this course, providing many useful suggestions.