**Meeting**: T/Th 10:30–11:50 a.m., ARC 140

**Instructor**: Gordon Stewart (gstewart@ohio.edu)

**Office Hours**: T 3-4:30pm

TAPL: Types and Programming Languages, by Benjamin Pierce

ATTAPL: Advanced Topics in Types and Programming Languages, ed., Pierce

PLF: Programming Language Foundations, by Pierce et al.

CS 4201/5201 Software Verification

Homework consists of programming and written assignments. There will be no midterm nor final but instead an extensive (research-oriented) final project.

The grading breakdown is roughly as follows:

Component | Weight |
---|---|

Homework | 40% |

Attendance | 10% |

Final Project | 50% |

Blackboard will be used only to report grades.
Up-to-date information on other aspects of the course
(assignment due dates, etc.) will be posted on this website,
so check back frequently!

**Assignments Key:**

Unless otherwise noted, assignments are due at 11:59pm.

Review: Simply-typed lambda calculus (STLC)

Intro. to Haskell (for Coq, OCaml and Pyret programmers)

Reading:
TAPL 5, 6, 9;
PLF Stlc

Reading:
Intrinsically-Typed Definitional Interpreters for Imperative Languages by Poulsen et al.

Code:
STLC.hs

Intro. to Haskell (for Coq, OCaml and Pyret programmers)

Review: Syntactic type safety proofs (preservation+progress)

STLC extensions: products, sums, references

Recursive and existential types, abstraction

Reading:
TAPL 11, 13

STLC extensions: products, sums, references

Recursive and existential types, abstraction

The polymorphic lambda calculus (System F)

Church encodings (bools, numbers, existentials, etc.)

Higher-order types, kinds; F_\omega

Reading: TAPL 23, 29-30

Th 2/1: Written Assignment #1

Th 2/1: Final Project Checkpoint #1

Code:
F.hs

Church encodings (bools, numbers, existentials, etc.)

Higher-order types, kinds; F_\omega

Dependent type systems

Generalizing the lambda cube (pure type systems)

Reading:
ATTAPL 2

Th 2/8: Programming Assignment #1

Generalizing the lambda cube (pure type systems)

Program equivalence

Logical relations and parametricity

Reading:
TAPL 12, Theorems for free! (P. Wadler), P&P Considered Boring! (slides by D. Dreyer)

Logical relations and parametricity

Reasoning about imperative programs:
Hoare logic, separation logic, separation algebras

Reading:
Separation Logic, Reynolds (2002)

Th 3/1: Final Project Checkpoint #2

Applications in security, information-flow

Reading:
Secure Information Flow by Self-Composition, Barthe et al. (2004)

Applications in privacy, differential privacy

Reading:
Differential
Privacy: A Survey of Results, Dwork (2008)

Th 3/29: Written Assignment #2

Th 3/29: Final Project Checkpoint #3

Probabilistic programming languages

Reading:
Operational versus weakest pre-expectation semantics for
the probabilistic guarded command language by Gretz et al.

Probabilistic couplings

Reading:
Chapter 2 of Probabilistic Couplings for Probabilistic Reasoning by Hsu (2017)

Th 4/12: Final Project Checkpoint #4

NO CLASS (Most people will be away at ESOP)

Final project presentations

Th 4/29: Programming Assignment #2

- Up to 24 hours late: no deduction, for a max 2 late homeworks per student across the entire semester
- Homeworks later than 24 hours, or from students who have already turned in 2 late homeworks, will receive 0 points.

Instructor/GA | Noninstructor (e.g., Another Student) | |
---|---|---|

You | all collaboration allowed | high-level discussion
(of the problems, not your code!)
allowed but only after you've started the assignment;
must be documented in README as described below |

```
(*
```

README

Name: Gordon Stewart

Assignment: A0

Collaboration: I spoke with X and Y about Z.

*)

However, **under no circumstances** are you permitted
to share or directly copy code or other written homework material,
except with course instructors.
If I discover that you've cheated on an
assignment, you'll get an automatic 0 along with an immediate
referral to the
Office of Community Standards, which will likely
take disciplinary action against you.
Remember: homework is there to give *you* practice in
the new ideas and techniques covered by the course; it does you no
good if you don't engage!

In general, students in EECS courses such as this one must adhere to the Russ College of Engineering and Technology Honor Code, and to the OU Student Code of Conduct. If you haven't ever read these documents, please do so.