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 | http://www.ii.uib.no/~jjarvi/INF329 (UiB's official course page) |
Contact | |
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 |
Resources
Books
Material from the following books will be used:
- Ralf Lämmel: Software Languages (Draft)
- William Cook: Anatomy of Programming Languages (Draft)