UW CSE 507: Computer-Aided Reasoning for Software
Graduate course
introducing automated reasoning techniques for the design, analysis, and construction of software
UW CSE 505: Concepts of Programming Languages
Graduate course
using proof assistants to explore transition systems, inductive invariants, type systems, Hoare logic, metatheory
UW CSE 341: Programming Languages
Undergraduate course
exploring informal operational semantics, functional programming vs. OOP, static vs. dynamic typing
UW CSE 331: Software Design and Implementation
Undergraduate course
exploring specification, invariants, testing, debugging, modular design
Special Topics Graduate Courses
UW CSE 599Z: Accurate Computing
Numerical computing and computational fabrication
UW CSE 599W: Systems Verification
Formally verifying systems implementations
UW CSE 506: Advanced Topics in Programming Languages
Proof assistants, dependent types, and systems verificiation
★ I was honored to be nominated for the UW Distinguished Teaching Award in 2015.