Course Information

Course Description

In this class, we look at a particularly intriguing example of how theory and practice can interact to create new knowledge and solve real-world problems. The course begins with Boolean logic and functions. Boolean representations can be used to model a wide variety of interesting problems. We discuss methods such as binary decision diagrams (BDDs) and high-speed Boolean satisfiability (SAT) algorithms, and we will explore how these are used in practice. We then move on to first-order logic. We discuss syntax and semantics of first-order logic and explore complexity and completeness results. We will then look at ways to use first-order logic in practical verification efforts and show how these techniques can be applied to hardware and software systems.


Ability to understand abstract mathematical concepts and proofs; ability to write reasonably sophisticated programs.


Tuesday 7:00-9:00pm in room 709 of 719 Broadway.