CpSc 513: Introduction to Formal Verification and Analysis

Overview

Formal verification and analysis started as the application of rigorous mathematical methods to show that hardware and software designs have the desired properties. Verification remains a major part of formal methods: every large chip design project has a formal verification team to prevent costly errors from making it through fabrication. In the past 10 years, formal methods have been rapidly growing in supporting software development. More recently, formal methods are finding application in areas beyond finding bugs. Interest in software synthesis is growing with applications such as Excel™'s FlashFill enabling non-programmers to create useful Excel macros. Efficient solvers for SAT (boolean satisfiability) and SMT (Satisfiability Modulo Theories, i.e. SAT plus decision procedures for arrays, lists, other data structures, linear programs, non-linear inequalities ...) have found application in optimization methods (and vice-versa). For example, MonoSAT (developed by Sam Bayless, Alan Hu, and Holger Hoos at UBC) is used by Amazon for AWS resource provisioning and security checks.

Is CpSc 513 for you? Of course! ☺ I assume that you've never had a formal methods course before -- now is a great time to get acquainted. The methods and applications of formal methods cover a wide range of computer science including theory, systems, programming languages, concurrency, AI, and robotics. If you are interested in multiple areas of computer science, you'll do well in your career, and you'll have fun in CpSc 513.

Specifics

This document was last modified on: (GMT)