These web pages use cascading style sheet features for formatting. You may still browse the text of the site, but for best results, use a modern CSS-enabled browser.
Course Banner

CS 116: Reasoning about Program Correctness

Caltech Course CS 116 provides an introduction to formal reasoning about correctness of computer programs. We will cover both the theory and the practice of program reasoning, focusing more on the practice.

We will look at representative programming problems and discuss how to verify correctness using automated tools Dafny and the Stainless verifier for (a subset of) the Scala programming language.

Topics include

  • writing formal specifications of program behavior
  • fundamentals of program reasoning using preconditions, postconditions and loop invariants
  • introduction to program semantics using predicate transformers
  • specification and verification of representative examples
  • a brief overview of SAT and SMT solving
  • fundamentals of verification condition generation for automated proofs
  • reasoning about object-oriented programs

CS 116 is a companion course to

Logistics

Tue / Thu
1 - 2:25 p.m.
Annenberg 107
Caltech campus

Instructor

Rajeev Joshi

Teaching Assistant

(TBD)

Piazza Site

http://piazza.com/caltech/fall2017/cs116/home

Email

rjoshi "at" caltech "dot" edu