Overview of formal verification techniques in software engineering; system modeling with automata; temporal logics; algorithms and techniques of model checking to critical systems in industry. Before enrolling in this course, students should have taken CS 524 or an undergraduate algorithms course and an undergraduate programming languages course.