Principles and Paradigms of Programming Languages
Aim
Students will be provided with a deeper and more critical knowledge of programming languages,
through the learning of theoretical foundations and the comparison of different paradigms.
AulaWeb a.a. 21/22
AulaWeb a.a. 20/21
AulaWeb a.a. 19/20
AulaWeb a.a. 18/19
AulaWeb a.a. 17/18
Topics
- Foundations: induction and coinduction, small-step semantics, type systems, soundness
- Functional paradigm: lambda calculus, call-by-value and call-by-name, simply-typed lambda-calculus, polymorphism, Hindley-Milner inference
Functional programming in Haskell, lazy evaluation, type classes
- Effects: extensions of lambda-calculus with imperative features and exceptions, Haskell monads
- Object-oriented paradigm: Featherweight Java
Logic paradigm: model-theoretic semantics, SLD resolution, Prolog, co-logic programming
Teaching material and useful links
Note delle lezioni(in italian)
Types and Programming Languages, B. Pierce, available in our library
Haskell
SWI Prolog
Exam
The exam will consist of an oral test and the development of a small project or the preparation of a seminar.
Back to previous page
Last change: February, 7, 2022