Spring 2023
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 19. Oracle 2022. JLS SE 19
- (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: Brigt Håvardstun (team leader), Sander Wiig, Vegard Birkenes
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-14 (HIB Store aud) and Wednesdays 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 Monday 16 January 2023 (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.
- 2023-01-16
- Monday L0301: Introduction / Haskell
- Wednesday L0302: Top500 / Sums & Products
- Assignment 1: Haskell
- 2023-01-23
- Monday L0401: Abstract syntax, interpreters
- Wednesday L0402: BTL (expressions)
- Assignment 2: Top500 / Sums & Products
- 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)
- 2023-01-30
- Monday L0501: BIPL (statements)
- Wednesday L0502: Static analysis / Typing
- Assignment 3: BTL (expressions and interpreters)
- Note 2: Interpretation (zip)
- SLBook: sections 5.1 (Metaprograms: Interpretation), 5.3 (Metaprograms: Analysis)
- Pamphlets 1 2 3
- 2023-02-06
- Monday L0601: PIPL (procedures)
- Wednesday: Q&A Pamphlets 1 2 3 4 5 6
- Assignment 4: BIPL (statements and scope)
- Pamphlets 4 5 6
- 2023-02-13
- Monday L0701: Data structures
- Wednesday L0702: Abstract data types (ADTs)
- Assignment 5C: PIPL, deadline 2023-02-27 23:59
- EiffelStd: classes (optional)
- Note 3: Procedures
- 2023-02-20
- Monday L0801: Assertions / Properties
- Wednesday: –
- Assignment 5C support and deadline
- Note 4: Abstract data types and classes
- 2023-02-27
- Monday L0901: Generics (templates)
- Wednesday L0902, Guest lecture: David Grellscheid (UiB): A Tale of 7 Bugs
- Pamphlets 7 8
- Note 5: Typesafe generics
- 2023-03-06
- Monday L1001: Programming Language Standardisation & Evolution
- Wednesday: – (research seminar for master students)
- Assignment 6C: Yarn calculator, deadline 2023-03-23 1215
- 2023-03-13
- Monday L1101: Grammars and Parsing
- Wednesday L1102: Q&A Pamphlets 7 8
- Assignment 6C support
- SLBook: section 6 (Foundations of textual concrete syntax)
- SLBook: section 7.2 (Parsing)
- Note 6: Parsing
- 2023-03-20
- Monday L1201: MDCS
- Wednesday L1202: Q&A
- Assignment 6C support and deadline
- 2023-03-27
- Monday L1301: Vulnerabilities
- Wednesday: –
- Assignment 7: assertions
- Assignment 8C: MDCS, deadline 2023-04-14 1215
- ISOVulnerabilities
- 2023-04-03 Easter Break
- 2023-04-10
- Wednesday: –
- Assignment 8C support and deadline
- 2023-04-17
- Monday: -
- Wednesday L1602: Lambda Calculus
- Assignment 9: Language standards
- SLBook: section 10-10.3 (An excursion into the lambda calculus),
section 11.2 (Direct style for denotational semantics, recommended reading only)
- 2023-04-24
- Monday L1701: Course Summary / Q&A
- Wednesday: –
- Assignment 10: The λ-calculus and programming language features
- 2023-05-01
- Groups: Q&A all assignments, earlier exams, curriculum in general
- 2023-05-08
- 2023-05-15
- 2023-05-22
The exam will use Inspera (digital) in a limiting browser on campus.
updated 2023-05-22 by
Magne Haveraaen