Semantics of Programming Languages

(winter semester 2020-2021)

Moodle course webpage.

  1. [cw1] [jam] concrete vs abstract syntax, parsing of numbers, denotational semantics of arithmetic expressions.

  2. [cw1,cw2] [jam] variables, small-step operational semantics of arithmetic expressions, termination, environments.

  3. [cw3] [jam] small-step operational semantics of IMP, looping constructs; binary numbers with addition.

  4. [cw4] [jam] big-step operational semantics of arithmetic expressions and IMP.

  5. [cw5] [jam] eager vs. lazy evaluation.

  6. [cw5] [jam] eager vs. lazy evaluation in higher-order expressions.

  7. [cw6, cw7] [jam] exceptions, local variables, procedures with an integer parameter (static binding).

  8. [cw7, cw8] [jam] procedures with an integer parameter (dynamic binding; call-by-need); denotational semantics.

  9. [cw8, cw9] [jam] denotational semantics (imperative programs, local variables, functions).

  10. [cw10] [jam] continuations.

  11. [cw10] [cw11] [jam] continuing continuations.

  12. [cw12] [jam] axiomatic semantics.

  13. [cw12, cw13] [jam] loop invariants, arrays.