NDAB16008U Programming Language Design (PLD)

Volume 2026/2027
Education

BSc Programme in Computer Science

Content

The course explores the design space of programming languages and how the design choices affect the implementation and other properties of the language.

A brief history of programming languages is presented and a selected set of features are explored with respect to design choices, how they interact and how they can be implemented.

The aim is to give the student an understanding of the programming-language landscape that will both be helpful when the student designs and implements programming languages but also to better understand existing programming languages.

There will be some programming in languages very different from what most students have experienced, including variants of LISP and Prolog.

Learning Outcome

The course aims to give the student:

Knowledge of

  • Implementation strategies
  • Syntax
  • Memory management
  • Scope rules
  • Control structures
  • Types
  • Language paradigms
  • Modules
  • Semantics
  • Domain-specific languages
  • Computational power of languages
  • Reversible and quantum programming

 

Skills to

  • Design and implement simple programming languages or language extensions using several of the above-listed features.
  • Describe this language using a mixture of formal and informal specification.
  • Make small programs in uncommon or esoteric languages.

 

Competences to

  • Evaluate how design choices affect and are affected by implementation methods and other properties of programming languages.
  • Design, extend, or implement a programming language tailored to a specific problem area or observing specific properties.

Notes that will be published on the course home page (Absalon).

The student should have knowledge of basic programming language implementation equivalent to the course "Implementering af programmeringssprog (IPS)" and have experience programming in several language paradigms, at least including a functional language in the ML family (Standard ML, OCaml, F#, Haskell), a C-like imperative language, and a class-based object-oriented language (Java, C# or similar).
Lectures, classroom exercises, projects.
  • Category
  • Hours
  • Lectures
  • 28
  • Preparation
  • 71
  • Theory exercises
  • 28
  • Project work
  • 75
  • Exam
  • 4
  • Total
  • 206
Written
Oral
Individual
Collective
Continuous feedback during the course of the semester

Oral, collective feedback is given for the exercises in the exercise classes.  The mandatory assignments are given written, individual feedback.

Credit
7,5 ECTS
Type of assessment
On-site written exam, 4 hours under invigilation
Examination prerequisites

To qualify for the exam, the student must pass three assignments during the course.  The assignments can be solved in groups of up to three people.  It will be possible to resubmit the first two assignments after getting feedback from TAs, but due to time constraints, no resubmission is possible for the third.

To pass an assignment, at least 40% of the maximum possible points must be achieved.

Generative AI is allowed in the assignments with the standard restrictions, in particular it must be clear from the submission where and how generative AI has been used.

Aid
Only certain aids allowed (see description below)

Access will be given to selected programming languages covered in the course.  Some through installation on ITX computers, some by access to selected web sites.

Use of generative AI is not allowed in the exam.

Marking scale
7-point grading scale
Censorship form
No external censorship
Several internal examiners
Re-exam

Same as ordinary exam.

If a student is not qualified for the exam, qualification can be achieved by resubmission and approval of assignments no later than 3 weeks before the re-exam.

Criteria for exam assesment

See Learning Outcome.