Computer Science 2800: Lecture Notes