NDAK24007U Advanced Topics in Programming Languages (ATPL)

Volume 2024/2025
Content

This course provides an introduction to state-of-the-art research within an area of programming languages involving theory, design, reasoning, implementation and/or application of programming languages. It acquaints students with performing and communicating independent research in project form.  The course consists of lectures and subsequent group (2-4 persons) seminar presentations and mini-projects. The mini-projects may consist of theoretical investigations, software construction or a combination of these. Master's thesis projects will be offered in continuation of the course.  The particular research topic(s) may change from year to year; see below for this year's topics. 

In 2024, the course is about *hybrid quantum-classical computing*. In the foreseeable future, addressing challenging real-world problems using future quantum computers will require a hybrid approach, combining massively parallel classical high-performance computing (HPC) on big data, with the delegation of intricate subproblems on relatively small data sets to quantum computers.

The course covers

  • hardware-agnostic high-level programming that combines quantum algorithms and classical data-parallel algorithms; 
  • an intermediate language for optimization and approximation;
  • and code generation that targets a mix of quantum computers and GPUs.  

 

The course is planned to be conducted with access to state-of-the-art quantum and HPC hardware in partnership with IBM and Nvidia, and in collaboration with researchers in quantum chemistry where quantum computing promises to achieve quantum superiority on significant real-world problems first.

Introductions to relevant background topics (multilinear algebra using braket notation, quantum computation, tensor networks, reversible computing, functional array programming) will be given in the beginning of the course.

 

Learning Outcome

Knowledge of

  • Aspects of the dual nature of programs as software (to be executed) and as data (to be reasoned about, analyzed and transformed)
  • The role of a precise (mathematical) semantics for a programming language in connection with analyzing and manipulating programs
  • Principles of programming language design and implementation and how they are applied in connection with the topics under study



Skills to

  • Discuss properties such as correctness and performance and define what they mean in the specific topics under study
  • Specify ideas and concepts as rigorous definitions and make falsifiable (or provable) statements about them
  • Read, assess and communicate research papers
  • Apply central results in the given area of studies
  • Write a research paper
  • Prepare and give a research paper presentation



Competences to

  • Develop a given project proposal into a project plan, execute it, and present the results

Research articles and excerpts from books, distributed electronically. 

See Absalon for a list of course literature.

The course is open to Master's degree students from computer science, mathematics, quantum information science, physics or similar programs. Introductions to/refreshers of relevant computer science and mathematics background will be given at the beginning of the course.

The following are examples of useful, but not required, background or complementary courses.

Advanced Programming (AP)
Data Parallel Programming (DPP)
Introduction to Quantum Computing (IQT)
Introduction to Quantum Information Science (IQIS)
Program Analysis and Transformation (PAT)
Programming Massively Parallel Hardware (PMPH)
Quantum Compilers (QC)
Quantum Algorithms and Machine Learning (QAML)
Semantics and Types (SaT)
The course progresses from teaching (lectures with exercises) to student seminar presentations and finally a group mini-project, which is the basis for the oral exam:

▪ Lecture phase: lectures and exercises, formation of project groups (3 weeks)
▪ Seminar phase: seminar presentations by project groups (3 weeks)
▪ Project phase: project work by project groups (3 weeks)
The course is identical to the discontinued course NDAA09026U Topics in Programming Languages (TiPL)
  • Category
  • Hours
  • Lectures
  • 12
  • Preparation
  • 12
  • Exercises
  • 24
  • Project work
  • 96
  • Seminar
  • 48
  • Exam Preparation
  • 13
  • Exam
  • 1
  • Total
  • 206
Oral
Collective
Continuous feedback during the course of the semester
Peer feedback (Students give each other feedback)

Students receive feedback from the instructors during the course on
exercises, seminar presentations and project status reports (draft papers). Students give each other feedback during each others' seminar presentations and within the mini-project groups.

Credit
7,5 ECTS
Type of assessment
Oral exam on basis of previous submission, 30 minutes (no preparation time)
Type of assessment details
Individual oral examination without preparation.

During the course the students will carry out a group-based mini-project resulting in a co-authored report.

Format: An individual presentation of select parts of a group report (i.e. mini-project report) followed by individual examination in the course topics (see topics and learning objectives) with special emphasis on the subject of the report the student has co-authored.
Aid
All aids allowed
Marking scale
7-point grading scale
Censorship form
No external censorship
Several internal examiners
Re-exam

Same as the ordinary exam.

Individual oral examination (30 minutes, without preparation) based on
submitted mini-project report and course topics (see topics and learning objectives).

If a student has not previously handed in a mini-project report this can be handed in as an individual mini-project report no later than 1 week before the reexamination date.

Criteria for exam assesment

See Learning Outcome