Programming language design and analysis

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

Course information

Lectures: Wed 18-20h, A 110
Monday lectures at 16h, 8 nov. and 15 nov.
Lab/Project: Mon 18-20h, B528
Office hours: on request

Evaluation:
Homeworks / lab / projects: 50%.
Exam: 50%
Exam (+makeup) grades
Overall grades

Lecture notes

  1. Introduction. Functional Programming
  2. Functional Programming. Lambda Calculus
    Readings: Lambda Calculus. Introduction (L. Allison) (up to excl. Circular Programs)
    Lambda calculus (course notes, Jeff Foster)
    Lambda calculus (course notes, Susan Older)
  3. Types
    Jeff Foster: Type Systems (lecture slides, 1-17, 37-48, 58-63)
  4. Eager and lazy evaluation. Lazy streams.
    Readings: Streams as delayed lists (from Abelson and Sussman)
  5. Continuations and exceptions. Slides part 1 and part 2 (Mark Hills, UIUC).
    Continuations: Ch. 16.1-2, 19.1-3 from the PLAI book.
  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 for sec. 3 and 4)
  9. Language support for concurrency. More details: Ted Leung's A Survey of Concurrent Constructs
    See also Clojure on agents, data structures and refs; and basic notions of Erlang (with sample code)
  10. Domain-specific languages. See also Martin Fowler's book (archived draft)
    Case studies: Advances in Programming Languages, University of Edinburgh (lect. 9-11, selections)
  11. Python slides by Mihai Oaida
  12. Monads: handling side effects in functional programming. slides (Edinburgh course)
    See also: Understanding monads, Haskell monads and I/O (sec. 1-4)

Homeworks

  1. Homework 1. Functional program interpreter. Due Oct. 14, 2010
  2. Homework 2. Extend Homework 1 with function expressions. Due Oct. 25, 2010
  3. Homework 3. Type inference. Due Nov. 4, 2010

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 Oct 29 11:55:00 EEST 2010