Lecture Notes for CS6840 course at IIT Madras