INF329 Selected Topics in Programming Theory, Fall 2016
(Really: INF222 Programming Languages)

Course Essentials

Meeting times Tue 16:15–18:00, Wed 10:15–12:00, Høyteknologisenteret (HIB: G209M1)
  Sometimes we reschedule for one of these times: Tue 8:30, Thu 14:15, Fri 14:15
Instructor Jaakko Järvi
Course pages (UiB's official course page)
Office hours TBA
Prerequisite Recommended INF121

About the course

This INF329 offering is what will become the new INF222 class in Spring 2017.

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 Assignments      
Tue 23.08 Introduction to programming languages Slides1 Slides2        
Wed 24.08 no class          
Tue 30.08 Operational semantics Slides3 A1      
Wed 31.08 Structural Induction          
Tue 06.09 Small-step operational semantics Slides4 A2      
Wed 07.09 About types Slides5 A3      
Tue 13.09 About Types          
Wed 14.09 Untyped Lambda Calculus Slides6 A4      
Tue 20.09 Computing with Lambda Calculus          
Wed 21.09 no class          
Tue 27.09 Grammars Slides7        
Wed 28.09 Functional Parsers Slides8 code A5      
Tue 04.10 Simple typed lambda calculus Slides9        
Wed 05.10 Subtyping Slides10        
Tue 11.10 Subtyping          
Wed 12.10 About closures Notes        
Tue 18.10 References Slides11        
Wed 19.10 no class          
Tue 25.10 Typing references, programming with closures          
Wed 26.10 Evaluation contexts, implementing small-step evaluation Notes        
Tue 01.11 no class   A6      
Wed 02.11 no class          
Tue 08.11 Class at 8:30! More on evaluation contexts. Continuations. Notes        
Wed 09.11 no class          
Tue 15.11 Typechecking. CPS in JavaScript.   A6 updated      
Wed 16.11 CPS in JavaScript, promises, co-routines. Current continuation. Slides13        
Fri 18.11 Extra class at 14.15! Polymorphism. Slides12        
Mon 21.11 Class at 12.15! Polymorphism.   Practice Exercises 1      
Tue 22.11 Class at 8.30! Existential types.   Practice Exercises 1     Practice Exercises 2
Thu 01.12 Class at 14.15! Bounded quantification. Slides14 Practice Exercises 3      
Fri 02.12 Class at 14.15!          
Tue 06.12            
Wed 07.12            
Tue 13.12            
Wed 14.12 Exam          




Material from the following books will be used:

Author: Jaakko Järvi

Created: 2016-12-01 Thu 14:08