Spring 2020
Contents on this web page
The course investigates programming language concepts.
It uses a hands-on approach were the students experiment with semantics for programming language features.
Students are also asked to develop software in these experimental setting,
and thus reflect over beneficial and contraproductive programming language constructs.
Reading Material
The curriculum consists of
all lectures/presentations, notes, handouts, pamphlets, assignments, related course material, and selections of the curriculum book.
See the schedule below.
Lecturer and course responsible: Magne Haveraaen
Teaching assistants: Benjamin Chetioui, Marianne Luengo Fuglestad, Rudi Blaha Svartveit.
The participants are adviced to organise study groups for discussing
the topics of the course and assist each other in solving the assignments.
Lectures are Mondays 1015-12 and Thursdays 1215-14.
See the official schedule.
Teaching starts Monday 13 January 2020 (week 3).
Teaching will be in the form of lectures, exercise classes and
time off for self studies.
The teaching plan is tentative and will be modified.
The resources mentioned are available in MittUiB.
- 2020-01-13
- SLBook: section 1 (The notion of a software language)
- Monday L0301: Course Setup / Introduction
- Thursday L0302: A Programming Language Framework
- 2020-01-20
- SLBook: sections 1.2 (Classification of Software languages), 3-3.1 (Tree based abstract syntax)
- Assignment 1: Classification of programming languages / Abstract Syntax (solutions)
- Note 1: About concrete and abstract syntax (zip)
- 2020-01-27
- SLBook: sections 4-4.3 (Representation of object-programs in metaprograms)
- Assignment 2: Haskell (solutions)
- Thursday L0502: Abstract Syntax
- 2020-02-03
- SLBook: sections 5.1 (Metaprograms: Interpretation), 5.3 (Metaprograms: Analysis)
- Assignment 3: Interpretation
- Note 2: Interpretation (zip)
- Thursday L0602: Basic Interpreter (zip)
- 2020-02-10
- SLBook: sections 6 (Foundations of textual concrete syntax), 7.2 (Parsing)
- Assignment 4C: Computus interpreter, deadline 2020-02-21
- Note 3: Parsing (pending – see instead L0702 and examples within L0502 and L0801)
- Monday: Haskell crash course I @ 1015
- Thursday L0702: Parsing
- Thursday: Haskell crash course II @ 1630
- 2020-02-17
- Assignment 4C note: In- and out-parameters
- Monday L0801: Conceptual study of programming languages: Scoping
- Thursday L0802: Domain Specific Languages (zip)
- 2020-02-24
- Assignment 5: Scoping (SIPL) (solution zip)
- 2020-03-02
- Assignment 6C: Domain Specific Languages (DSLs) and DIPL tools, deadline 2020-03-23
- Thursday: Fagkritisk dag
- 2020-03-09
- Monday L1101: (a) DIPL, (b) Scoping, (c) Procedures
- Thursday onwards: Corona closure
- 2020-03-16
- Pamphlets 1/1s 2/2s 3/3s 4/4s: calculator
- 2020-03-23
- Pamphlets 5/5s 6/6s 7/7s programming languages (zip)
- 2020-03-30
- Assignment 7: Assertions (zip)
- Monday L1401: Assertions
- Thursday L1402: Properties
- 2020-04-06 Easter Break
- 2020-04-13
- Assignment 8C: Vulnerabilities, deadline 2020-04-29
- Thursday L1602 Guest lecture: David Grellscheid: A tale of 7 bugs
- 2020-04-20
- Monday L1701: Generics
- Thursday L1702: Typing
- 2020-04-27
- SLBook: section 10-10.3 (An excursion into the lambda calculus))
- Monday L1801: Lambda Calculus
- Thursday L1802: Approaches to semantics
- 2020-05-04
- Assignment 9: The λ-calculus and programming languages
- Note 4: Typesafe generics
- Monday L1901: Course summary
- 2020-05-11
- 2020-05-18
The exam will use Inspera (digital, "at home", open book).
Last updated 2020-05-20 by
Magne Haveraaen