No up-to-date course description available.Text below is from year 2016/2017

Contents:

This course aims to teach students the concepts and principles of programming languages and program language design.

Literature:

May change!
There is no book or lecture notes.
Instead, articles, slides, and background reading will be provided during the course.

Course form:

The course will consist of a mix of lectures and presentations by students.

Exam form:

To complete the course students will need to:

give a presentation (in a group)

complete a small research project (in a group)

present this project in a poster session and/or report (in a group)

take a final exam

Minimum effort to qualify for 2nd chance exam:

To qualify for the retake exam, the grade of the original must be at least 4.

Description:

Upon completing the course, students will:

Understand what constitutes the definition of a programming language (syntax, static semantics, and dynamic semantics), together with common terminology used in the description and definition of programming languages (such as calling conventions, type systems, garbage collection).

Be able to formulate and design domain specific languages, either as embedded
or stand-alone language, while understanding the relative merits of
these two approaches.

Distinguish between the concepts of concurrency and parallelism and
understand the language mechanisms that modern languages use to
support both these issues.

Understand the concept of metaprogramming and how different
languages implement this.

Being able to formulate a simple language's syntax, static
semantics, and dynamic semantics and understand the design choices
involved.

Be able to learn new languages quickly and be able to identify how
new languages relate to existing concepts and languages.