Homework

We are planning on 6 homework assignments this quarter. Each homework will involve formalizing programs and proving properties about their behavior, both in Coq and doing more traditional “pen and paper” style proofs. We also expect several homework assignments to involve writing some code in the languages we are formalizing.

Please submit homework solutions via the 505 Gradesope. See the 505 Overview section on homework for more information on points and partners. The 505 Gitlab may also host drafts of upcoming assignments; early feedback is welcome!

Homework 1

Assignment: hw1.zip (browse)

Due: April 2 by 5pm PT

This first homework is a quick, tutorial introduction to Coq based on material from the first lecture of Week 01 and is the only homework that must be completed individually.

Homework 2

Assignment: hw2.zip (browse)

Due: April 9 by 5pm PT

This homework focuses on proofs by induction in Coq as well as formalizing the syntax and semantics of PLs where programs always terminate for "obvious" reasons. It covers material from Week 01 and the beginning of Week 02. Homework 2 and subsequent homework assignments should be completed with your partner.

Homework 3

Assignment: hw3.zip (browse)

Due: April 23 by 5pm PT

This homework covers inductive propositions, transition systems, and a little bit of Imp. Transition systems, the focus of Week 03, are a mathematical framework that we can use to study potentially infinite computations, such as while loops. (Recall that all our interpreters from Week 02 had to "obviously" terminate in order for Coq to accept them. So interpreters can't handle while loops.) Don't forget to work with your partner!

Homework 4

Assignment: hw4.zip (browse)

Due: May 7 by 5pm PT

This homework covers inductive propositions, Imp programs as transition systems, Hoare logic, and a little bit of untyped lambda calculus. Don't forget to work with your partner!

Homework 5

Assignment: hw5.zip (browse)

Due: May 28 by 5pm PT

This homework covers inductive propositions, Imp programs as transition systems, Hoare logic, and a little bit of untyped lambda calculus. Don't forget to work with your partner!

Homework 6

Assignment: hw6.zip (browse)

Due: June 4 by 5pm PT Extended to June 6 by 5pm PT

This homework mostly focuses on System F. Don't forget to work with your partner!