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.
Miscellaneous
Cover image: public domain