Topics in Programming Languages (TiPL)

Course content

This course provides an introduction to state-of-the-art research and applications within an area of programming languages involving theory, design, implementation and/or application of programming languages. It acquaints students with performing independent research and its communication in seminar and project form.

The course consists of a particular set of topics reflecting state-of-the-art research and applications within theory, design, implementation and/or application of programming languages. This may include the construction, analysis or manipulation of programs with predictable properties and/or for a certain purpose. The particular topic(s) change from year to year.

In 2020/21 the course is about (programming) language-based security. The course will present a variety of techniques based on programming language semantics that serve to improve or guarantee the security of a program. Topics that will be covered in the course include: information-flow control, vulnerability analysis, and software-fault isolation and sandboxing. The course will provide relevant introductions to abstract interpretation and type-based program verification and applications in a selection of use cases.

The course consists of a selection of topics that reflect the current state of research as well as lecturer and participant backgrounds and interests; lectures on the topics selected; seminar presentations by participants on their chosen topic(s); and group (2-4 persons) 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.

Learning outcome

Knowledge of

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

 

Skills to

  • Discuss properties such as correctness, performance and define what they mean precisely 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.
  • Prepare and give a seminar talk.
  • Write a research paper.

 

Competences

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

 

The course progresses from teaching (lecture) to seminar and finally project form:

Lecture phase: lectures and exercises, the formation of seminar/project groups
Seminar phase: student seminar talks
Project phase: project work

Research articles and excerpts from books, distributed electronically. 

See Absalon for a list of course literature.

Advanced Programming and Advanced Computer Systems or equivalent. Semantics and Types (SaT) is recommended, but not required. Contact the course organiser if you have questions.

Oral
Collective
Continuous feedback during the course of the semester
Peer feedback (Students give each other feedback)

Students receive feedback from the lecturer during the course on exercises, seminar presentations and project report drafts. Students give each other feedback on seminar talks and, within the mini-project groups, on each other's project work. 

ECTS
7,5 ECTS
Type of assessment
Oral examination, 30 minutes
Individual oral examination without preparation.

Format: An individual presentation of select parts of group report followed by individual examination in the course topics (see topics and learning objectives) with special emphasis on the subject of the written report the student has co-authored.
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
  • 18
  • Preparation
  • 12
  • Practical exercises
  • 24
  • Project work
  • 145
  • Guidance
  • 6
  • Exam
  • 1
  • English
  • 206