Spring 2022
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 is based on material listed below.
Check MittUiB for access to the course material and the other publications.
The schedule below contains details about relevant sections of the publications.
- Course material: lectures/presentations, notes, handouts, pamphlets, assignments, related course material.
- (SLbook) Ralf Lämmel: Software Languages : Syntax, Semantics, and Metaprogramming. Springer 2018. DOI:10.1007/978-3-319-90800-7
- (HaskellStd) Haskell 2010 standard. https://www.haskell.org/onlinereport/haskell2010/
- Optional (EiffelStd) Eiffel: Analysis, design and programming language 2nd edition, June 2006. ECMA-367
- (JavaStd) Java SE 17. Oracle 2022. JLS SE 17
- (ISOVulnerabilities) ISO/IEC JTC 1/SC 22/WG 23 Programming Language Vulnerabilities Programming languages — Guidance to avoiding vulnerabilities in programming languages — Part 1: Language-independent guidance. ISO/IEC TR 24772-1:2019
- (ISOVulnerabilitiesJava) ISO/IEC JTC 1/SC 22/WG 23 Programming Language Vulnerabilities Programming languages — Guidance to avoiding vulnerabilities in programming languages — Part 11: Guidance for programming language Java. ISO/IEC WD TR 24772-11
The documents ISOVulnerabilities and ISOVulnerabilitiesJava are
not available from MittUiB.
Draft versions of these are available at the WG23 work area.
A student subscription at Norsk Standard will give full access to ISOVulnerabilities and many other ISO standards (including the official programming language standards for C, C++ and Fortran).
The report ISOVulnerabilitiesJava has not been published yet,
so you will need to look at the draft version.
Lecturer and course responsible: Magne Haveraaen
Teaching assistants: Jørn Lode (team leader), Olav Aga, Svein Høgemo, Sander Wiig
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 Wednesdays 1415-16 (HIB Store aud) and Thursdays 0815-10 (HiB Store aud).
Check the official schedule for group times and updates to the lecture schedule.
The lectures are streamed on Zoom (due to Covid restrictions) and are uploaded to MittUiB.
Details about coming to the physical lectures and the Zoom channel
are published in MittUiB.
Teaching starts Wednesday 26 January 2022 (week 4).
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 as files in MittUiB.
- 2022-01-24
- Wednesday L0401: Setup / Introduction
- Thursday L0402: Introduction to Haskell - 1
- 2022-01-31
- Assignment 1: Haskell
- Wednesday: –
- Thursday: Introduction to Haskell - 2
- 2022-02-07
- Assignment 2: Haskell & Top500
- Note 1: About concrete and abstract syntax (zip)
- SLBook: sections 3-3.1 (Tree based abstract syntax)
- SLBook: sections 4-4.3 (Representation of object-programs in metaprograms)
- Wednesday L0601: Abstract Syntax / Expressions – BTL
- Thursday L0602: Abstract Syntax / Statements – BIPL
- 2022-02-14
- Assignment 3: Abstract Syntax and metalanguages
- Note 2: Interpretation (zip)
- SLBook: sections 5.1 (Metaprograms: Interpretation), 5.3 (Metaprograms: Analysis)
- Wednesday L0701: Interpretation / State
- Thursday L0702: Static semantics
- 2022-02-21
- Assignment 4C: Abstract syntax, static analysis (typing, etc), interpretation, deadline 2022-03-11 1215
- Wednesday L0801: Typing
- Thursday L0802: Assertions / Properties
- 2022-02-28
- Assignment 4C support
- Wednesday: –
- Thursday: –
- 2022-03-07
- Assignment 4C support
- Wednesday L1001, Guest lecture: David Grellscheid (UiB): A Tale of 7 Bugs
- Thursday: –
- 2022-03-14
- Assignment 5: Language standards
- Pamphlets 1 2 3
- Wednesday L1101: Programming Language Standardisation / Evolution
- Thursday: Pamphlet 1 1s 2 2s 3 3s discussion
- 2022-03-21
- Assignment 6: Interpreters
- Pamphlets 4 5 6
- Wednesday L1201: Data structures
- Thursday: Pamphlet 4 4s 5 5s discussion
- Optional: Thursday 1245-1330 (Large auditorium), Guest lecture: Felienne Hermans (Leiden University, the Netherlands): Hedy: Creating a gradual programming language
- 2022-03-28
- Assignment 7C: Abstract data types, deadline 2022-04-08 1215
- EiffelStd: classes (optional)
- Wednesday: – (Voss research seminar for master students)
- Thursday L1302: Abstract data types / Classes
- 2022-04-04
- Assignment 7C support
- Note 3: Typesafe generics
- Pamphlets 6 7
- Wednesday L1401: Generics / Templates
- Thursday: Pamphlet 6 6s 7 7s discussion
- 2022-04-11 Easter Break
- 2022-04-19
- Assignment 8C: Units, deadline 2022-04-30 1215
- Note 4 (optional): Parsing
- SLBook: section 6 (Foundations of textual concrete syntax)
- Pamphlet 8
- SLBook: section 7.2 (Parsing)
- Wednesday L1601: Grammars and Parsing
- Thursday L1602: Grammars and Parsing, P8 P8s P8T
- 2022-04-25
- Assignment 8C support
- ISOVulnerabilities
- Wednesday L1701, Guest lecture: Erhard Plödereder (University of Stuttgart DE, ISO WG23): Vulnerabilities in programming languagesi – know about them and avoid them
- Thursday: –
- Optional: Thursday 1245-1330 (Large auditorium), Guest lecture: Erhard Plödereder (University of Stuttgart DE): Vulnerabilities in Safety, Security, and Privacy
- 2022-05-02
- Assignment 9: The λ-calculus and programming language features (optional)
- SLBook: section 10-10.3 (An excursion into the lambda calculus),
section 11.2 (Direct style for denotational semantics, recommended reading only)
- Wednesday L1801: Lambda Calculus / Course Summary
- Thursday L1802: Course Summary / Q&A
- 2022-05-09
- Groups: Q&A all assignments, earlier exams, curriculum in general
- 2022-05-16
- Groups: Q&A all assignments, earlier exams, curriculum in general
- TBD: possibly INF222 crash course
- 2022-05-23
- Tentative information, always check official sources a week before: Monday 0900-1200, Exam in Inspera
The exam will use Inspera (digital) in a limiting browser on campus.
- Important information about exams
Bring with you coloured pens/pencils, as you may be asked to make illustrations.
- If relevant (off campus exam), we will open TEST for INF222 about two weeks before the exam (closes a couple of days before the actual exam).
This will let you become familiar with various Inspera exam tools that are relevant for INF222.
updated 2022-05-11 by
Magne Haveraaen