NDAB16008U Programming Language Design (PLD)
BSc Programme in Computer Science
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.
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.
Notes that will be published on the course home page (Absalon).
- Category
- Hours
- Lectures
- 28
- Preparation
- 70
- Theory exercises
- 28
- Project work
- 80
- Total
- 206
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
- Written assignment, 7 days
- Type of assessment details
- The exam assignment is individual, and any form of cooperation or help from people other than the teachers of the course will be considered plagiarism.
- Exam registration requirements
To qualify for the written, take-home 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.
- Aid
- All aids allowed
Using ChatGPT or similar large language models is allowed both for the group assignments and the final exam assignment, but you must include the entire dialogue in the report (otherwise it is plagiarism), and you must argue the relevance and correctness (or lack thereof) of the answers you get from the AI (otherwise, you will get no points whatsoever from the answer).
- 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.
The comments about cooperation and use of large language models from the ordinary exam also apply to the reexam.
Criteria for exam assesment
See Learning Outcome.
Course information
- Language
- English
- Course code
- NDAB16008U
- Credit
- 7,5 ECTS
- Level
- Bachelor
- Duration
- 1 block
- Placement
- Block 3
- Schedule
- B
- Course capacity
- No limitation – unless you register in the late-registration period (BSc and MSc) or as a credit or single subject student.
Study board
- Study Board of Mathematics and Computer Science
Contracting department
- Department of Computer Science
Contracting faculty
- Faculty of Science
Course Coordinators
- Torben Ægidius Mogensen (7-7671746467706f42666b306d7730666d)