Programming language design and analysis

Fall semester 2016/2017. previous: Fall 2016
Instructor: Marius Minea,
Labs: Loránd Szakács

Course information

Lectures: Mon 18-20h, A 109
Lab: Thu, Fri 18-20h, B528b
Office hours: on request

Homeworks/lab/projects: 50%, Exam: 50%
Lab grades. Exam grades

Lecture notes

  1. Introduction. Functional Programming.
  2. Lambda Calculus.
    Principles of Programming Languages, Uday Reddy, U. Birmingham (handouts 1-4)
  3. Type systems.
    Readings: Luca Cardelli: Type Systems (p.1-7)
    L. Cardelli, P. Wegner. On Understanding Types, Data Abstraction, and Polymorphism (sec. 1-1.5, 2.1-2.2)
    Typed lambda calculus and type inference. lecture slides by Jeff Foster, U. of Maryland (slides 1-17, 37-48, 58-63)
  4. Continuations. slides, TU Darmstadt (w/o simulation of web programs, implementation of continuations) ML example for factorial
    Eager and lazy evaluation. sieve of Eratosthenes. See also streams as delayed lists (from Abelson and Sussman)
  5. Garbage collection. slides by Vladimir Shmatikov, U. Texas, Ina Schaefer, U. Kaiserslautern
  6. The Java virtual machine slides from Aarhus University
  7. Dynamic compilation slides by Michael Hind (IBM) (w/o details of particular JVMs for sec. 3 and 4)
  8. Language support for concurrency.
    Classical concurrency constructs (course, Cambridge): only mechanisms, not sample problems
    Synchronization without locks (sec. 1 and 2)
  9. Monads. See tutorials by Mike Vanier part 1, 2, 3 (you can skip the derivations), 4, 5
    A shorter version here (Stephen Diehl) (up to incl. 'What's the point?')
  10. Evolution of Generics in Java. Reading: Bruce, Odersky, Wadler: A Statically Safe Alternative to Virtual Types, ECCOP 1998 PDF. See sec. 2, 3 (strengths of parametric and virtual types).
    Scala type system slides by Heather Miller
  11. Static vs. dynamic typing. Reading: E. Meijer, P. Drayton. Static Typing Where Possible, Dynamic Typing When Needed PDF
    Gradual typing (J. Siek); p.1-14
  12. Logic programming. Prolog basics
    Constraint logic programming. CLP in ECLiPSE (Ch. 4, Improved reasoning in Ch. 5)
  13. Discussion on programming language design/adoption. (not exam material)
    Stefik/Hanenberg: Programming Language Wars presentation
    Meyerovich/Rabkin: Programming Language Adoption sociological principles, empirical analysis


Master page


  1. Homework 1



Online Courses

Martin Odersky. Functional Programming Principles in Scala


Marius Minea
Last modified: Sat Feb 10 18:00:00 EET 2018