CS578 Spring 2024 Final Exam Guide The exam is a take-home, due by email at 11:59pm on Friday, June 14. The exam is open-book, open-notes, open-internet. However, the exam is self-contained, i.e. in principle there should be no need to refer to the textbook or notes in order to understand and answer the questions. The exam was designed to take about two hours if you are well prepared, but you can take as much time as you wish. Of course, you must complete the exam individually without any collaboration with other people. There will be no OCaml code to read or write on the exam. Broadly, the exam will focus on material not on the midterm, namely: - Pierce Chapters 12,13,20,22,23 - Handouts: "Type Safety via Logical Relations" "IMP and Denotational Semantics" (sections 1-3 only) - Homeworks 5-8 - Lectures from April 30 through June 4 The exam may also refer back to basic material covered before the midterm. In particular, you should be familiar with all the STLC extensions described in Ch. 11. The exam will NOT include material from: - Pierce Chapters 24,25 (although they were on the original schedule) More specifically, here is a list of topics: Languages with state: STLC with references IMP language Metatheoretic properties (esp. about normalization) Normalization proof for STLC Failure of simple induction approaches Method of logical predicates Type Reconstruction Constraint extraction Unification Recursive Types Equirecursive vs. isorecursive formulations Metatheoretic properties (esp. about normalization) Universal Types Let-polymorphism System F Metatheoretic properties (esp. about normalization) Denotational Semantics Meaning functions and semantic domains Definition of iterative operators via fixpoints (Note: You do NOT need to be able to prove existence of fixpoints.) Proving equivalence of programs via their meaning functions