Discrete Structures Lecture Notes