You will find a list of topics and an order in which we will explore them below. Lectures will follow this order.

  • Introduction to the course
  • Program proofs: The inductive assertion method
  • Decision Procedures
  • Testing
  • Introduction to Program Analysis: Data Flow Analyses
  • Program Synthesis
  • Introduction to Temporal Logics (LTL and CTL)
  • Model Checking


You will find lecture slides, and other material related to lectures and tutorials posted here. Here is an outline of the class plan. Naturally, we may not stick to this plan 100% depending on how quick or slow a particular session progresses. So, view this more as an order in which we will explore different topics, rather than an exact timing (it is one week short, to leave room for possible delays).

  • Week (1): Introduction to the course (slides)
  • Week (2): Program Correctness (slides) (bin-search, factorial)(Reading: chapters 5 and 6 of Calculus of Computations)
  • Week (3): Program Correctness continued (slides), bin-search, termination, bubble sort
  • Week (4): Decision Procedures (slides) (Reading: chapter 2 of Decision Procedures)
  • Week (5): Synthesis (slides) (no designated reading)
  • Week (6): Data flow Analyses (slides) (Reading: chapters 1 and 2 of Principles of Program Analysis)
  • Week (7): Data flow Analyses (slides) (last set of slides)
  • Week (8): Model Checking (slides) (Reading: chapter 5.1 of model checking book)
  • Week (9): LTL (slides)
  • Week (10): CTL and CTL Model Checking (slides)
  • Week (11): Testing (slides)
  • Week (12): Wrap-up (no slides)