Programming language design and analysis
Fall semester 2016/2017. previous: Fall 2015
Instructor: Marius Minea, email@example.com
Labs: Loránd Szakács
Lectures: Mon 18-20h, A 110
Lab: Tue, Wed 18-20h, B528b
Office hours: on request
Homeworks/lab/projects: 50%, Exam: 50%
- Introduction. Functional Programming.
- Lambda Calculus.
Principles of Programming Languages, Uday Reddy, U. Birmingham (handouts 1-4)
- 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)
- 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)
- Garbage collection. slides by Vladimir Shmatikov, U. Texas, Ina Schaefer, U. Kaiserslautern
- The Java virtual machine slides from Aarhus University
- Dynamic compilation slides by Michael Hind (IBM) (w/o details
of particular JVMs for sec. 3 and 4)
- Language support for concurrency.
Concurrency in other languages (I. Stark, Edinburgh)
Synchronization without locks (sec. 1 and 2)
- Logic programming. Prolog basics
Constraint logic programming. CLP in ECLiPSE (Ch. 4, Improved reasoning in Ch. 5)
- 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
- 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?')
- Static vs. dynamic typing. Reading: E. Meijer, P. Drayton. Static Typing Where Possible, Dynamic Typing When Needed PDF
- Interfacing different languages
- Homework 1
- Homework 2
- Homework 3
- Abelson and Sussman, Structure and Interpretation of Computer Programs. The classic introductory programming course at MIT, now online.
You should be able to use it as reference for the notions in the first
- Friedmann, Wand and Haynes, Essentials of Programming Languages.
Perhaps more heavily interpreter-oriented, but also very well explained. Available in the free ebook library
- van Roy and Haridi, Concepts, Techniques and Models of Computer Programming.
Well structured and very readable. An essentially complete draft is available.
- S. Krishnamurthi, Programming Languages: Application and Interpretation. Made available for free by the author.
Also very well structured and readable, with a few special topics (see e.g. continuations for web programming)
Martin Odersky. Functional Programming Principles in Scala
- the OCaml implementation and documentation
- the OCaIDE development environment (Eclipse plugin)
- a short introductio to OCaml (Scott Smith, Johns Hopkins U.)
Last modified: Wed Jan 11 10:15:00 EET 2016