Lecture 2: Boolean Functions, Gates and Circuits