Constraint Satisfaction : Algorithms and Complexity Course Notes