INF222 Programming Languages, Spring 2019

Course Essentials

Lectures Tue 14:15–16:00, Thormøhlens gate 51 (VilVite), Auditorium
  Thu 14:15–16:00, Thormøhlens gate 51 (VilVite), Auditorium
Instructor Jaakko Järvi
TAs  
Course pages http://www.ii.uib.no/~jjarvi/INF222 (Also: UiB's official course page)
Contact
Office hours TBA
Prerequisite Recommended INF121

Schedule and material

Some of the materials are behind a password. Ask the instructor for one.

Date Topic Material Reading
Tue 15.1 Introduction course setup introduction Lämmel 1.2–1.3.2
Thu 17.1 Abstract Syntax slides notes code: btl-ast.cpp ast-representations.hs Lämmel 3–3.1.5, 4–4.1.3, 4.2–4.3
Tue 22.1 Interpreters notes slides code: lec04code.zip Lämmel 5–5.1.2
Thu 24.1 Type checking, compiling (compiler code is in lec04code.zip) Lämmel 5.2
Tue 29.1 Specifying operational semantics, structural induction notes slides Lämmel 8–8.1
Thu 31.1 Operational semantics continues (notes/slides updated)   Lämmel 8.2–8.2.5.1
Tue 5.2 Class cancelled    
Thu 7.2 Types and type-checking slides Lämmel 9.1–9.7.
Tue 12.2 Types continues, concrete syntax slides code: acceptor-and-parser-generator.hs (commentary) Lämmel 7.2–7.3.3
Thu 14.4 Concrete syntax ll1-parser.hs  
Tue 19.2 Parser combinators notes Lämmel 7.2.4
Thu 21.2 About monads slides  
Tue 26.2 About monads    
Thu 28.2 Lambda calculus slides Lämmel 10.1
Tue 5.3 recursion, simply typed lambda calclus slides fixpoint-examples Lämmel 10.1–10.2
Thu 7.3 No class    
Tue 12.3 subtyping slides Lämmel 10.4
Thu 14.3 subtyping, procedural abstraction slides  
Tue 19.3 No class    
Thu 21.3 procedural abstraction notes  
Tue 26.3 closures    
Thu 28.3 oo runtime, managing free memory slides (runtime structures) notes (managing memory)  
Tue 2.4 polymorphism with(out) inheritance, move semantics slides slides (move semantics)  
Thu 4.4 No class    
Tue 9.4 Evaluation contexts notes ec-interpreter  
Thu 11.4 Continuations notes continuation-examples.hs  
Tue 16.4 no class (Easter week)    
Thu 18.4 no class (Easter week)    
Tue 23.4 CPS; Ownership-based resource management slides  
Thu 25.4 Polymorphism slides Lämmel 10.3
Tue 30.4 No class    
Thu 2.5 No class    
Tue 7.5 Bounded parameteric polymorphism slides  
Tue 9.5 Existential types, wildcards    
Tue 14.5 Review review notes  
Thu 6.6. Exam old exam example model answers to the final exam  

Assignments

Assignment 1 abstract syntax, simple interpretation and pretty-printing a1.html a1-answers.html  
Assignment 2 interpreters/type checking a2.pdf a2-answers.pdf  
Assignment 3 semantics / proof techniques a3.pdf a3-answers.pdf  
Assignment 4 Obligatory lexing/parsing/parser combinators a4.html a4-answers.html Deadline: <2019-03-01 Fri>
Assignment 5 Lambda caclculus a5.pdf a5-answers.pdf  
Assignment 6 Bonus Lambda calculator a6.html   Deadline: <2019-03-24 Sun>
Assignment 7 subtyping/procedural abstraction a7.html a7-answers.html  
Assignment 8 Obligatory Evaluation contexts, exceptions, continuations, etc. a8.html   Deadline: <2019-05-19 Sun>
Assignment 9 Generics, Wildcards a9.pdf a9-answers.pdf  

Resources

Books

  • Ralf Lämmel: Software languages — Syntax, semantics, and metaprogramming 2018, Springer, ISBN: 3319908006

Software

  • Many programming assignments will be done with Haskell. Make yourself a comfortable Haskell programming environment. Get started here: https://www.haskell.org/
    • A good and accessible resource for questions about Haskell programming is the Learn You a Haskell online book.

Author: Jaakko Järvi

Created: 2019-06-06 Thu 13:40