Semantics of Programming Languages
(winter semester 2019-2020)
- cw1: concrete vs abstract syntax, parsing of numbers, semantics of arithmetic expressions, variables.
- cw2: small steps operations semantics of arithmetic expressions, termination, determinism, deterministic results.
- cw2: variables (global and local environments); cw3: small steps operational semantics of IMP, looping constructs.
- cw3: binary numbers; cw4: big steps operational semantics of IMP, equivalence with small-steps, loop construct (small and big steps).
- cw5: eager vs. lazy semantics in arithmetic and higher-order expressions.
- cw6: exceptions. cw7: local scope, functions with one integer parameter, recursive functions.
- cw6: regular programs. cw7: call by need.
- cw8: denotational semantics of arithmetic and boolean expressions; denotational semantics of while programs.
- cw9: denotational semantics of local declarations, functions with one integer parameter, recursion.
- cw9: call by name/value, static/dynamic binding; cw10: introduction to continuations.
- cw10: continuations (abort, break, continue).
- cw10: continuations (arithmetic expressions, exceptions, set/goto)
- cw11 (coroutines); cw12 (axiomatic semantics).
- cw12: axiomatic semantics (rules, loop invariants, new constructs); cw13 (more examples).
- cw13: arrays; cw14 (termination).