Room 1257, Computer Sciences

Mon, Wed, Fri 230-345

Aws Albarghouthi, instructor

aws-teach@cs.wisc.edu

Office hours: Mon 345-445

Room 6363, Computer Sciences

Introduction to principles of advanced programming languages and programming-language theory. Topics include: lambda-calculus, functional languages, polymorphic functions, type inference, structural induction, lazy evaluation, operational semantics, denotational semantics, and axiomatic semantics.

Apr 9: Assignment 3 due May 4

Mar 8: Assignment 2 due Mar 31

Feb 27: Project proposal due Mar 20

Feb 1: Released assignment 1

Date | Topic | Notes | Assigned | Other |
---|---|---|---|---|

Jan 23 | Lambda calculus introduction |
Ch. 5 of TAPL
Notes |
||

Jan 25 | Computing with lambda calculus |
Chs. 5 and 6 of TAPL Notes |
||

Jan 27 | Encoding programming constructs in lambda calculus |
Ch. 5 of TAPL Notes |
||

Jan 30 | Fixed-point combinators |
Notes Matt Might's blog: Y combinator in JS (See Might's other lambda calculus posts too.) |
||

Feb 1 | Church-Rosser Theorem | Notes | ||

Feb 6 | Functional programming | Tonnes of online tutorials | ||

Feb 8 | Structural induction |
Notes
Burstall's 1969 paper |
||

Feb 19 | Introduction to Types | Ch. 8 of TAPL | ||

Feb 22 | Simply typed Lambda Calculus | Ch. 9 of TAPL | ||

Feb 20 | Type inference |
Ch. 22 of TAPL Notes: part 1 and part 2 |
||

Feb 22 | Axiomatic semantics/Floyd-Hoare logic |
Chs. 9 and 10 of Sem (see references) There are lots of lectures/tutorials online |
||

Feb 27 | Invariants as fixpoints | |||

Mar 1 | Automatic proofs (predicate abstraction / k-induction) |
Predicate abstraction: Sec. 4 of SMC (see references below) A note on k-induction |
||

Mar 6 | Building a mini verifier | Python code | ||

Mar 8 | Intro to Abstract Interpretation | Notes
More details in Ch. 4 of PA (see references). See also FRAP Ch. 7. |
||

Mar 13 | Abstract interpretation of programs | same as above | ||

Mar 27 | Termination proving | See Cook's notes | ||

Mar 29 | Automating termination proofs | Rybalchenko & Podelski, VMCAI04 Rybalchenko & Podelski, LICS04 | ||

Apr 3 | Pre-expectations | See Ch1 of [MM] below | ||

Apr 5 | Expectation invariants | See Ch2 of [MM] below | ||

Apr 10 | Expectation invariants (cont'd) | |||

Apr 12 | Probabilistic analysis via model counting | See Sankaranarayanan et al. (2013) | ||

Apr 17 | Approximate probabilistic inference |
Sec 12.3 of Koller & Freidman for MCMC Church for MCMC in a probabilistic PL Also play with WebPPL |
||

Apr 19 | Review | |||

Apr 24 | Program synthesis primer | notes + code | ||

Apr 26 | Presentations | |||

May 1 | Presentations | |||

May 3 | Presentations |

Performance will be evaluated as follows:

40%: Assignments -- 4 problem sets throughout the term.

40%: Research project

10%: Project presentation

10%: Class participation

For the final project, you can work on a problem of your choice with a partner or by yourself.

- The statement of the problem to be investigated
- An explanation of why the problem is interesting
- A description of what you propose to do,
- Explain the elements that you will have to build
- Explain the elements that you can pick up from open-source sites
- Explain the experiment(s) or performance measurement(s)
that you plan to carry out. Two good approaches are
- State the hypothesis that you hope to refute.
- Complete the following sentence: ``The experiments were designed to shed light on the following questions: . . .''

- List the tasks, broken down into two or three milestones

There are no required textbooks for this class. The following is a list of books that should be useful references for different parts of the course.

This is an excellent reference for our lambda calculus and types material, available electronically through Wendt

This is an alternative lambda calculus resource.

This is a nice survey of most topics we will cover in this class:

The following two books cover different aspects of model checking and temporal logics.

The following book covers data-flow analysis and abstract interpretation.

This is another abstract interpretation resource.

This is a paper surveying software model checking research.

This book talks about decision procedures and their applications in verification.

This is a massive book on everything decision procedures, SAT, SMT, etc.

This is a short book on operational, axiomatic, and denotational semantics.

This is a book on probabilistic verification.

There are many courses at other universities that cover similar topics.

and many others very little googling will find.

Based on minimal by orderedlist—CC BY-SA 3.0