Prerequisites: CS 152, CS 181, or equivalents
Description: Introduces the techniques for analyzing program semantics and correctness. Covers simply-typed lambda calculus as well as basic and advanced type systems. Presents axiomatic, operational, and denotational semantics. Explores programming- language constructs and tools for specifying, reasoning, and verifying correctness properties. Includes safe memory accesses and safe concurrent programming or security.
Credit: May be taken Satisfactory (S) or No Credit (NC) with consent of instructor and graduate advisor.