Programming language design and analysis

Fall semester 2011/2012. Old course page
Instructor: Marius Minea
marius@cs.upt.ro

Course information

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

Evaluation:
Homeworks / lab / projects: 50%.
Exam: 50%
Grades

Lecture notes

  1. Introduction. Functional Programming
  2. Lambda Calculus
    Readings: Principles of Programming Languages, Uday Reddy, U. Birmingham
    Lambda Calculus. Introduction (L. Allison) (up to excl. Circular Programs)
    Lambda calculus (course notes, Jeff Foster)
  3. Typed lambda calculus and type inference. lecture slides by Jeff Foster, U. of Maryland (slides 1-17, 37-48, 58-63)
  4. Type systems. slides.
    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)
    Eager and lazy evaluation. Streams as delayed lists (from Abelson and Sussman)
  5. Continuations. slides, TU Darmstadt
  6. Garbage collection. slides by Vladimir Shmatikov, U. Texas, Ina Schaefer, U. Kaiserslautern
  7. Constraint Logic Programming. slides by Thom Frühwirth (see comparison between search/solving in LP and CLP)
    slides on ECLiPSE (H. Simonis) -- Ch. 4 and 5
  8. The Java virtual machine slides from Aarhus University
  9. Dynamic compilation slides by Michael Hind (IBM) (w/o details for sec. 3 and 4)
  10. Language support for concurrency. More details: Ted Leung's A Survey of Concurrent Constructs
    See also a discussion of persistent data structures

Homeworks

  1. Homework 1. Functional program interpreter. Due Oct. 18, 2011
  2. Homework 2. Lambda calculus interpreter. Due Nov. 1, 2011
  3. Homework 3. Type inference. Due Nov. 15, 2011
  4. Homework 4. Prolog interpreter. Due Nov. 29, 2011
  5. Homework 5. Bytecode checker. Due Dec. 22, 2011

Resources

Books

Software

Supplementary reading

Project topics

Choose a project, individually or in pairs, on a topic of your interest related to programming languages. Suggestions below:

Program analysis tools and infrastructures

Sample project ideas


Marius Minea
Last modified: Fri Feb 10 23:30:00 EET 2011