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.