After this course participants are able to:
- Model computations in functional languages using rewrite systems (term rewrite systems, lambda calculus). Analyse computations in rewrite systems like confluence and termination.
- Design alternative formalisms for state and memory models for imperative languages.
- Model the semantics of existing programming languages, by selecting appropriate existing formalisms and by extending these if needed. Perform a case study using their own formalism. Present the results in a professional way and justify the model to colleagues.
In this course you will learn computation models that are used for functional programming languages. These models form the basis for implementaion of such functional languages and they are also being used for studying the behavior of functional programs.
In addition, you learn to design alternative semantic models for defining the semantics of imperative programming languages. This is applied on existing languages. This part of the course builds upon the course Semantics and Correctness.