Topics
This course comprises both theoretical and practical aspects of programming languages:
- methods to describe language syntax (BNF)
- semantics of programming languages (denotational and operational semantics)
- variables and expressions
- imperative languages
- parameter passing mechanisms (call-by-value, call-by-name, and others)
- the lambda calculus
- types and type systems
- polymorphism
- higher-order functions
- object-orientation and generics
- concurrency
- theorem proving
- language generators and string rewriting
- advanced imperative and object-oriented programming
- basic functional programming
Materials
Assessment
History
This course was offered at Leiden University from 2020 to 2024. See the course entry in the Leiden University study guide archive.