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
  1. Propositional and predicate logic
  2. Specification of computer systems
  3. SAT solvers and fast practical tools for checking the satisfiability of boolean formulas
  4. Temporal logic and model checking
  5. Generation of test cases and counter examples
  6. Automatic theorem proving and proof assistants
Course Objectives
  1. To be able to use mathematical logic to formally specify properties of computer systems
  2. To be able to use state-of-the-art SAT solvers to solve practical problems in verification
  3. To be able to use a model checker to verify properties of computer systems
  4. To be able to use a proof assistant to prove properties of computer systems
  5. To be able to explain how SAT solvers, model checkers, and proof assistants work
Course Benefits
  1. To be able to provide more formal specifications
  2. To be able to reason formally about computer systems
  3. To be able to use automated tools in computer verification
  4. 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:
e-mail: jjohnson AT cs DOT drexel DOT edu
office hours: W 4-6, T 7-8 (online), additional hours by appointment.
Meeting Time
Wednesday 6:00-9: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

  1. Week 1: Propositional Calculus
  2. Week 2: Natural Deduction
  3. Week 3: SAT solvers
  4. Week 4: Predicate Calculus
  5. Week 5: ACL2 Proof Assistant
  6. Week 6: ACL2 Proof Assistant
  7. Week 7: ACL2 Proof Assistant
  8. Week 8: Temporal Logic and Model Checking
  9. Week 9: Model Checking
  10. Week 10: Model Checking


Grading

  1. Weekly labs and course participation (40%)
  2. Three Projects [SAT solver, Proof Asst, Model Checker] (60% - each worth 20%)


Resources

Reference Books
  1. Handbook of Practical Logic and Automated Reasoning, John Harrison, 2009.
  2. Handbook of Satisfiability, Edited by Biere, A., Heule, M., Van Maaren, H., Walsh, T, 2009.
  3. Principles of Model Checking, Christel Baier and Joost-Pieter Katoen, 2008.
  4. Concrete Semantics with Isabelle/HOL, Tobias Nipkow and Gerwin Klein, 2014.
  5. Certified Programming with Dependent Types: A Pragmatic Introduction to the Coq Proof Assistant Hardcover, Adam Chlipala, 2013.
  6. Computer-Aided Reasoning: ACL2 Case Studies, Matt Kaufmann, Panagiotis Manolios, and J Strother Moore (eds.), Kluwer Academic Publishers, June, 2000.
Web Pages
  1. Formal Verification
  2. Boolean Satisfiability
  3. 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.
  1. Week 1: Propositional Calculus (ch 1 - LICS)
  2. Week 2: Natural Deduction (ch 1 - LICS)
  3. Week 3-4: Normal Forms, Satisfiability and SAT Solvers (ch 1 - LICS)
  4. Week 5-6: Predicate Calculus (ch 2 LICS)
  5. Week 7: Software Micromodels (ch 2 LICS)
  6. Week 8: ACL2 Proof Assistant (ch 6-7 CAR)
  7. Week 9: Temporal Logic and Model Checking (ch 3 LICS)
  8. Week 10: Model Checking (ch 3 LICS)


Programs and Worksheets


Assignments

Solutions

 
Created: 12/17/14 [last updated 1/26/15] by jjohnson AT cs DOT drexel DOT edu