Spring 2021
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 from the following resources.
See the schedule below for more details.
- (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/
- (Pascal) Kathleen Jensen, Niklaus Wirth: Pascal User Manual and Report, Second Edition. Lecture Notes in Computer Science 18, Springer 1975, ISBN 3-540-07167-9 DOI:10.1007/3-540-06950-X
- (PascalStd) Information technology — Programming languages — Pascal. ISO 7185:1990 Edition. iso7185
- (JavaStd) Java SE 15. Oracle 2021. JLS SE 15
- (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
Check MittUiB for access to these publications except the latter two.
Draft versions of these are available at WG23 work area.
A student subscription at Norsk Standard will give full access to ISOVulnerabilities and many other ISO standards (including programming language standards).
The report ISOVulnerabilitiesJava has not been published yet.
Lecturer and course responsible: Magne Haveraaen
Teaching assistants: Svein Høgemo, Ragnhild Bratli, Jørn Lode.
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 Lille aud and Zoom) and Fridays 1215-14 (Zoom only).
The announcement in MittUiB has the Zoom details.
See the official schedule.
Teaching starts Wednesday 20 January 2021 (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 as files in MittUiB.
- 2021-01-18
- SLBook: section 1 (The notion of a software language)
- SLBook: sections 1.2 (Classification of Software languages)
- Wednesday L0301: Introduction
- Friday: Crash course in Haskell - 1
- 2021-01-25
- Assignment 1: Haskell
- Wednesday: Crash course in Haskell - 2
- Friday: Crash course in Haskell - 3
- 2021-02-01
- Assignment 1: Haskell - continued
- 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 L0501: Abstract Syntax / BTL
- Friday L0502: Typechecking
- 2021-02-08
- Assignment 2: Abstract Syntax
- Note 2: Interpretation (zip)
- SLBook: sections 5.1 (Metaprograms: Interpretation), 5.3 (Metaprograms: Analysis)
- Pascal: syntax diagrams
- Wednesday L0601: Interpretation / BIPL
- Friday L0602: Concrete Syntax / Syntax diagrams
- 2021-02-15
- Assignment 3: Interpretation
- Note 3: Parsing — omitted from the curriculum
- SLBook: sections 6 (Foundations of textual concrete syntax)
- SLBook: sections 7.2 (Parsing)
- Wednesday L0701: Parsing
- Friday: Pamphlet 1 1s 2 discussion
- 2021-02-22
- Assignment 4C: static analysis (typing, etc), deadline 2021-03-10 1000
- Pamphlets 1 2 3 4
- Wednesday: Pamphlet 2s 3 3s 4 discussion
- Friday: --
- 2021-03-01
- Assignment 4C support
- Pamphlets 5 6 7
- Wednesday: Pamphlet 4s 5 5s 6 6s 7 discussion
- Friday, Guest lecture: David Grellscheid (UiB): A Tale of 7 Bugs
- 2021-03-08
- Assignment 5: Grammars
- Pascal: procedures, type declarations
- Wednesday L1001: Procedures
- Friday L1002: Data structures
- 2021-03-15
- Assignment 6: Procedures and data structures
- Pamphlets 8
- Note 4: Typesafe generics
- Wednesday L1101: Data abstraction
- Friday L1102: Generics
- 2021-03-22
- Assignment 7C: store model, deadline 2021-04-14 1000 (extended with 1 week)
- Wednesday L1201: Assertions, properties
- 2021-03-29 Easter Break
- 2021-04-05
- Assignment 7C support
- Friday, Guest lecture: Yulia Startsev (Mozilla): Developing JavaScript in the SpiderMonkey engine
- 2021-04-12
- ISOVulnerabilities — recommended only
- Wednesday L1501: Vulnerabilities
- Friday L1502 Vulnerabilities
- 2021-04-19
- Assignment 8C: programming language standards, deadline 2021-04-30
- SLBook: section 10-10.3 (An excursion into the lambda calculus),
section 11.2 (Direct style for denotational semantics, recommended reading only)
- Wednesday L1601: Lambda Calculus
- Friday L1602: Approaches to semantics
- 2021-04-26
- Assignment 8C support
- NB! Thursday 1415-1600, Guest lecture: John Reid (UK), Bill Long (Cray/HPE, USA), Jon L. Steidel (Intel, USA): History of coarrays and SPMD parallelism in Fortran
- 2021-05-03
- Assignment 9: The λ-calculus and programming languages
- Wednesday, Guest lecture: Bjarne Stroustrup (Morgan Stanley and Columbia University, USA): Thriving in a Crowded and Changing World: C++ 2006-2020
- Friday L1802: Course summary
- 2021-05-10
- 2021-05-17
- Groups Tuesday-Friday: Q&A all assignments, 2020 exams, curriculum in general
- NB! Thursday 1415-1600, Guest lecture: Peter Van Roy (Université catholique de Louvain, BE): A history of the Oz multiparadigm language
- NB! Thursday 1615-1900: INF222 crash course organised by Gnist (group Zoom link)
- Friday L2002: Q&A
- 2021-05-24
- Group Monday: Q&A all assignments, 2020 exams, curriculum in general
- Friday: Inspera online exam @ 0900
The exam will use Inspera (digital, "at home", open book).
We have also opened 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.
Last updated 2021-05-14 by
Magne Haveraaen