Ideas for exam questions

Haskell

Write or trace Haskell definitions for simple functions that operate on lists, trees, numbers, etc.

Examples with higher-order functions: map, fold, etc.

Types

Give a derivation tree for typing example expressions.

Write a type checker for a simple language

Semantics

Decompose expressions using evaluation contexts

Write an interpreter for a simple language with runtime checks (defensive)

Write an interpreter for a simple language without runtime checks (trustful)

Closures, environments, and stores.

Understand abstract machines

Proofs

Do simple proofs by induction on numbers

Proofs by induction on the structure of expressions

Proofs by induction on type derivation

Read (not write) a simple Twelf specification

Java Bytecode Language

Trace some simple bytecode sequences

Explain how to verify some simple property of bytecodes