Based on Laurent Reveillère's course
Lecture slides 01
Lecture slides 02
Lecture slides 03