Programming language design and analysis

Fall semester 2014/2015. previous: Fall 2013
Instructor: Marius Minea, marius@cs.upt.ro
Labs: Loránd Szakács

Course information

Lectures: Mon 18-20h, A 204
Lab: Tue 8-10h, B528
Office hours: on request

Evaluation:
Homeworks / lab / projects: 50%.
Exam: 50%
homework grades
exam grades

Lecture notes

  1. Introduction. Functional Programming.
  2. Lambda Calculus
    Readings: Lambda calculus (course notes, Jeff Foster)
    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)
  4. Typed lambda calculus and type inference. lecture slides by Jeff Foster, U. of Maryland (slides 1-17, 37-48, 58-63)
  5. Eager and lazy evaluation. sieve of Eratosthenes. See also streams as delayed lists (from Abelson and Sussman)
    Continuations. slides, TU Darmstadt (w/o simulation of web programs, implementation of continuations) ML example for factorial
  6. Garbage collection. slides by Vladimir Shmatikov, U. Texas, Ina Schaefer, U. Kaiserslautern
  7. The Java virtual machine slides from Aarhus University
  8. Dynamic compilation slides by Michael Hind (IBM) (w/o details of particular JVMs for sec. 3 and 4)
  9. Language support for concurrency.
    Mechanisms for mutual exclusion
    Concurrency in other languages (I. Stark, Edinburgh)
    Synchronization without locks (sec. 1 and 2)
  10. Logic programming. Prolog basics
    Constraint logic programming. slides by Thom Frühwirth (terms, unification, resolution, comparison between LP and CLP, p. 107-123, 129-135)
    further reading: CLP in ECLiPSE (esp. Ch. 4)
  11. Ownership types (presentation by Loránd Szakács)
  12. Discussion on programming language design/adoption.
    Stefik/Hanenberg: Programming Language Wars presentation
    Meyerovich/Rabkin: Programming Language Adoption sociological principles, empirical analysis

Labs

General info

Homework

  1. Homework 1
  2. Homework 2
  3. Homework 3

Resources

Books

Online Courses

Martin Odersky. Functional Programming Principles in Scala

Software


Marius Minea
Last modified: Wed May 20 17:00:00 EEST 2015