The Version française contains further information
Description
Somewhat like the continuation of IFT-2035, this cours presents advanced concepts in programming languages.
We will study concepts of modern programming languages. Subjects that will be covered range over:
- Safe manual memory management (e.g. Rust)
- Gradual typing (e.g. Typescript)
- Multi-staged programming and metaprogramming (e.g. MetaOCaml)
- Automatic differentiation (e.g. DiffSharp)
- Dependent type systems (e.g. Agda)
- Introspection and reflection
- Aspect programming
- Delimited continuations
- Effect systems such as monads (e.g. Haskell)
- Programming by contracts, and blame assignment (e.g. Racket)
- Module systems (e.g. Standard ML)
- Probabilistic programming (e.g. Anglican)
- Reversible computation
- ...
Goals: Learn the advanced concepts that appear in modern programming
languages, as well as the techniques used to define them, implement them,
and analyze their properties.
Become familiar with the state of the art and open problems in programming
language research. Develop abilities to read academic literature and
properly understand it in its context, as well as to perform autonomous
research in programming languages.
A significant part of the course will be structured around presentations of journal and conference articles.
Schedule
See the unbearable and shameful Synchro form
Evaluation
Every student will have to do 1 project and 2 presentations. The final grade will be based for 50% on the project, 40% on the presentations and 10% on participation.