INF222 Programming Languages, Spring 2017
Course Essentials
Lectures | Tue 08:15–10:00, Wed 10:15–12:00, Høyteknologisenteret, Lille auditorium (HIB: LA) |
Labs | Depends on your group |
Instructor | Jaakko Järvi |
Course pages | http://www.ii.uib.no/~jjarvi/INF222 (UiB's official course page) |
Contact | |
Office hours | TBA |
Prerequisite | Recommended INF121 |
About the course
The course gives a practical and theoretical introduction to the semantics of programming language constructs. The course covers a range from micro level constructs, e.g., parameter passing, to macro level constructs, e.g., module systems. Reflecting on the influence of the constructs on software quality forms part of the course. We discuss the notions of different approaches to types and type checking in languages. Some features we study by using them in programs, some by implementing them in small interpreters in Haskell. Occasionally we will work on other languages as well.
The course will help you to become more productive with the languages of today and more prepared to learn (perhaps also implement) new programming languages in the future.
Schedule and material
Some of the materials are behind a password. Ask the instructor for one.
Date | Topic | Material | Reading |
---|---|---|---|
Tue 17.1 | Introduction to programming languages | course-setup introduction | Lämmel 2.2, 2.3.1–2.3.2 |
Wed 18.1 | Abstract syntax | notes slides | Lämmel 4–4.1.3 |
Tue 24.1 | Interpretation | notes | Lämmel 5–5.1.3 |
Wed 25.1 | Operational semantics | notes | Lämmel 8–8.1.4 |
Tue 31.1 | Operational semantics, structural induction | (download updated notes from 25.1) | |
Wed 1.2 | Small-step operational semantics | (download updated notes from 25.1) | Lämmel 8.2–8.2.3 |
Tue 7.2 | Simple types | slides | Lämmel 9.1–9.2 |
Wed 8.2 | Concrete syntax, parsing | syntax-slides parsing-notes | Lämmel 7.1–7.2, 7.3.4 |
Tue 14.2 | Parser combinators | (download updated notes from 8.2) | |
Wed 15.2 | About Monads, Applicatives, Functors. | (download updated notes from 8.2) | |
Tue 21.2 | More on monads. | monads-slides monad-examples | |
Wed 22.2 | Guest Lecture: "What makes or breaks a programming language?" | Tero Hasu slides | |
Tue 27.2 | Lambda Calculus | lambda-calculus-slides | Lämmel 11 |
Wed 28.2 | Lambda Calculus, evaluation orders | ||
Tue 7.3 | Simply typed lamda calculus, simple extensions | simply-typed-slides | |
Wed 8.3 | Closures and lambdas in practice | closures-notes | |
Tue 14.3 | Closures/lambdas continue. Subtyping. | subtyping-slides | |
Wed 15.3 | Subtyping | ||
Tue 21.3 | Subtyping. References and store. | references-slides | |
Wed 22.3 | References and store. | ||
Tue 27.3 | Evaluation contexts | evaluation-contexts-notes | |
Wed 28.3 | Continuations | continuations-notes | |
Tue 4.4 | No class | ||
Wed 5.4 | No class | ||
Tue 11.4 | Easter break | ||
Wed 12.4 | Easter break | ||
Tue 18.4 | Polymorphism | polymorphism-slides | Lämmel 11.7 |
Wed 19.4 | Parametric polymorphism; existential types; wildcards | ||
Tue 25.4 | ADTs and Objects; Bounded quantification | Cook: OO vs. ADTs | |
Wed 25.4 | Bounded quantification | bounded-quantification-slides | |
Tue 2.5 | Java Generics, Erasure; Polymorphism in different languages | ||
Wed 3.5 | No class | ||
Tue 9.5 | |||
Wed 10.5 | |||
Wed 24.5 | EXAM 09:00–12:00 |
Assignments
Assignment 0 | Get comfortable with editing, compiling, and running Haskell programs | |||
Assignment 1 | Abstract syntax, simple interpretation and pretty-printing | a1.html | answers | |
Assignment 2 | More interpretation, derivation trees etc. | a2.pdf | answers | |
Assignment 3 | Small-step semantics, proof techniques etc. | a3.pdf | answers | |
Assignment 4 | compulsory, deadline 2.3, submit via mitt.uib | Parser combinators, Monads. | a4.html | answers |
Assignment 5 | compulsory, deadline 18.3, submit via mitt.uib | Lambda calculus. | a5.html | answers |
Assignment 6 | Typing and subtyping | a6.html | answers | |
Assignment 7 | compulsory, deadline 24.4, submit via mitt.uib | Evaluation contexts | a7.html | answers |
Assignment 8 | Read William R. Cook: OO vs. ADTs | |||
Assignment 9 | Generics, Wildcards, System F, F-bounds, Existentials | a9.pdf | answers |
Late policy
Unless otherwise stated, late submissions are accepted, but there is a penalty of 4 percent of the maximum points for each beginning day. For example, assume the maximum is 100 points, and a student's on-time submission is worth 95 points. One beginning day late it would get 91 points, two days 87, etc.
Resources
Books
Material from the following (upcoming) books will be used.
- Ralf Lämmel: Software Languages: Syntax, semantics, and metaprogramming
- William Cook: Anatomy of Programming Languages (Draft)
Software
Many programming assignments will be done with Haskell.