This class covers a wide range of software engineering topics, focusing on formal software engineering techniques and the theoretical foundations for the software engineering field. A few lectures will also deal with "hot topics". The course assumes that the student has had an introductory course in software engineering, although a brief review of the field is presented at the beginning of the class.