home page


Programming Languages and Type Systems

M.Sc. course (in Romanian)

Instructor: Prof. Eneia Nicolae Todoran

Course description:

The course teaches the principles of imperative, functional, object-oriented and concurrent programming languages. Topics:  denotational semantics (states, environments, continuations, fixed-point semantics, concurrency semantics, classic domains, metric semantics), operational semantics (transition systems,  structural operational semantics), type systems (simply-typed lambda calculus, polymorphism, subtyping, type inference). The approach is intuitive, with all mathematical models implemented using an appropriate programming language. Haskell is used as a meta-language for denotational semantics.

Teaching activities:

Lectures: 28 hours


Research paper:  25%

Final Examination: 75%


  1. F. Turbak, D. Gifford. Design concepts in programming languages. MIT Press, 2008.
  2. B. Pierce. Types and Programming Languages. MIT Press, 2002. http://www.cis.upenn.edu/~bcpierce/tapl/
  3. J.C. Mitchell. Foundations for Programming Languages. MIT Press, 1996.
  4. J.W. de Bakker, E.P. de Vink. Control flow semantics. MIT Press, 1996.
  5. M. Felleisen, M. Flatt. Programming Languages and Lambda Calculi, 2006. http://www.cs.utah.edu/plt/publications/pllc.pdf
  6. E.N. Todoran. Limbaje si sisteme de tipuri – note de curs si seminar, 2010.  
  7. E.N. Todoran. Limbaje si sisteme de tipuri – semántica denotationala, 2012.
  8. E.N. Todoran. Introducere in semantica limbajelor de programare, 2016.