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.      


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  
Assignment 6   Typing and subtyping a6.html  

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-03-21 Tue 18:20