Formal Methods in Computer Verification (CS 680)
Announcments
Lectures
Programs
Course Resources
Assignments and Solutions
Grading Policy
 Course Description
This course is devoted to verification of computer systems including both
hardware and software. Verification and Validation is the process of
checking that a computer system meets its specifications and fulfills its
intended purpose. This course covers techniques and tools for computer
verification with an emphasis on formal methods of verification which use
mathematical techniques to prove that computer systems meet their
specifications.
 Audience

This is a graduate elective appropriate for graduate students in
Computer Science, Computer Engineering, Software Engineering and
Mathematics.
 Course Themes
 Propositional and predicate logic
 Specification of computer systems
 SAT solvers and fast practical tools for checking the satisfiability
of boolean formulas
 Temporal logic and model checking
 Generation of test cases and counter examples
 Automatic theorem proving and proof assistants
 Course Objectives
 To be able to use mathematical logic to formally specify properties
of computer systems
 To be able to use stateoftheart SAT solvers to solve practical
problems in verification
 To be able to use a model checker to verify properties of computer
systems
 To be able to use a proof assistant to prove properties of computer
systems
 To be able to explain how SAT solvers, model checkers, and proof
assistants work
 Course Benefits
 To be able to provide more formal specifications
 To be able to reason formally about computer systems
 To be able to use automated tools in computer verification
 To be able to design and build more reliable computer systems
 Prerequisites

There are no explicit prerequisites, though students should have had an
undergraduate degree in CS, CE, SE, or MATH. Students
are expected to have solid programming skills, be familiar with software
design and development, and have had some introduction to logic and
mathematical proof.
 Instructor
 Jeremy Johnson
Office: University Crossings 139
phone:
email: jjohnson AT cs DOT drexel DOT edu
office hours: W 46, T 78 (online), additional hours by appointment.
 Meeting Time
 Wednesday 6:009:00 in Rush 9 and online.
The online and in class versions
of the course will be identical (in class lectures will be recorded and posted
on BbLearn and use of online discussion will be required by everyone).
 Course Discussion Groups
 piazza.com/drexel/winter2015/cs680/home will be used for class discussion and announcements  check regularly

Please piazza for questions and discussions related to the course.
If you know the answer to someone's question, please feel free to jump in,
as long as well it is not an answer to a homework problem. I will moderate
the list so that frivolous mail and spam is not forwarded.

Textbook
Topics
 Week 1: Propositional Calculus
 Week 2: Natural Deduction
 Week 3: SAT solvers
 Week 4: Predicate Calculus
 Week 5: ACL2 Proof Assistant
 Week 6: ACL2 Proof Assistant
 Week 7: ACL2 Proof Assistant
 Week 8: Temporal Logic and Model Checking
 Week 9: Model Checking
 Week 10: Model Checking
Grading
 Weekly labs and course participation (40%)
 Three Projects [SAT solver, Proof Asst, Model Checker] (60%  each worth 20%)
Resources

Reference Books
 Handbook of Practical Logic and Automated Reasoning, John Harrison, 2009.
 Handbook of Satisfiability, Edited by Biere, A., Heule, M., Van Maaren,
H., Walsh, T, 2009.
 Principles of Model Checking, Christel Baier and JoostPieter Katoen,
2008.
 Concrete Semantics with Isabelle/HOL, Tobias Nipkow and Gerwin Klein,
2014.
 Certified Programming with Dependent Types: A Pragmatic Introduction to
the Coq Proof Assistant Hardcover, Adam Chlipala, 2013.
 ComputerAided Reasoning: ACL2 Case Studies, Matt Kaufmann,
Panagiotis Manolios, and J Strother Moore (eds.), Kluwer Academic
Publishers, June, 2000.

Web Pages
 Formal Verification
 Boolean Satisfiability
 SAT Solvers
Look Here for Important Announcements
Use piazza.com/drexel/winter2015/cs680/home
Lectures
This list is tentative and may be modified at the instructor's discretion.
Lecture notes will be added as the course proceeds. LICS and CAR refer to
the two required texts.
 Week 1: Propositional Calculus (ch 1  LICS)
 Week 2: Natural Deduction (ch 1  LICS)
 Week 34: Normal Forms, Satisfiability and SAT Solvers (ch 1  LICS)
 Week 56: Predicate
Calculus (ch 2 LICS)
 Week 7: Software Micromodels
(ch 2 LICS)
 Week 8: ACL2 Proof Assistant
(ch 67 CAR)
 Week 9: Temporal Logic and Model Checking (ch 3 LICS)
 Week 10: Model Checking (ch 3 LICS)
Programs and Worksheets
Assignments
Solutions
 Available for the class only through piazza
Created: 12/17/14 [last updated 1/26/15] by jjohnson AT cs DOT drexel DOT edu