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 (UiB's official course page)
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    


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.



Material from the following (upcoming) books will be used.


Many programming assignments will be done with Haskell.

Author: Jaakko Järvi

Created: 2017-05-15 Mon 17:21