CS578 Spring 2024 Midterm Guide The midterm is in-class (75 minutes) on Thursday, May 2. The exam will be closed book, using paper and pencil. Any language definitions, transition rules, and typing rules that you might need will be provided with the exam, so there is no need to memorize these. There will be no OCaml code to read or write on the exam. Broadly, the exam will cover: - Pierce Chapters 1-11, and the Contextual Semantics handout - Homeworks 1-4 - Lectures through Apr. 25. More specifically, here is a list of topics: Basic Concepts: Syntax of terms and types Small-step semantic evaluation rules Contextual semantic rules Big-step semantic evaluation rules Typing rules Induction proof techniques: Structural induction on terms Induction on derivations Induction on the length of a derivation sequence Languages: Arithmetic+Boolean expressions (untyped and typed) Untyped lambda calculus (pure and applied) (Note: You do NOT need to memorize encodings such as the Church numerals.) Simply-typed lambda calculus (STLC) STLC with extensions: Booleans, Arithmetic, Unit, Ascription, Sequencing, Let, Pairs, Sums, Recursion Definitions of metaproperties: Determinism (one-step and multi-step) Termination (= normalization) Uniqueness of normal forms Uniqueness of typing Progress Preservation Type Safety Proofs that metaproperties hold (or counterexamples showing that they don't) for specific languages. Some typical questions: - Apply evaluation and/or typing rules to specific examples. - Given a modification to one of the standard languages we've studied, determine what metaproperties hold. - Given an outline proof of some metaproperty on some language, fill in the missing cases. - Prove from scratch a simple result requiring structural induction on terms.