Programming Language Design (PLD)

Course 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.

Education

BSc Programme in Computer Science

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 or extend a programming language tailored to a specific problem area or observing specific properties.

Lectures, classroom exercises, projects.

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

The student should have knowledge of basic programming language implementation equivalent to the courses "Oversættere (OV)" or "Implementering af programmeringssprog (IPS)" and have experience programming in several language paradigms including functional, imperative and object-oriented languages.

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.

ECTS
7,5 ECTS
Type of assessment
Continuous assessment
Type of assessment details
The grade is given as a weighted average of four individual take-home assignments, where the final assignment is weighted as 40% of the total and the three first combined as 60%. To pass the course, every assignment must receive at least one third of the maximal points for that assignment, and the total must be at least half the maximal combined points.

It is possible to resubmit the three first assignments one week after they are evaluated. Due to time constraints it is not possible to resubmit the last assignment.
Aid
All aids allowed
Marking scale
7-point grading scale
Censorship form
No external censorship
Several internal examiners
Criteria for exam assessment

See Learning Outcome.

Single subject courses (day)

  • Category
  • Hours
  • Lectures
  • 28
  • Preparation
  • 70
  • Theory exercises
  • 28
  • Project work
  • 80
  • English
  • 206

Kursusinformation

Language
English
Course number
NDAB16008U
ECTS
7,5 ECTS
Programme level
Bachelor
Duration

1 block

Placement
Block 3
Schedulegroup
B
Capacity
No limit
The number of seats may be reduced in the late registration period
Studyboard
Study Board of Mathematics and Computer Science
Contracting department
  • Department of Computer Science
Contracting faculty
  • Faculty of Science
Course Coordinator
  • Torben Ægidius Mogensen   (7-7772756568717043676c316e7831676e)
Saved on the 28-02-2022

Are you BA- or KA-student?

Are you bachelor- or kandidat-student, then find the course in the course catalog for students:

Courseinformation of students