Course syllabus

Course-PM

DAT700 Advanced programming language theory lp4 VT26 (7.5 hp)

Course is offered by the department of Computer Science and Engineering

Contact details

  • JP Bernardy, examiner and lecturer jean-philippe.bernardy@gu.se
  • Evan Cavallo, teaching assistant evanc@chalmers.se

Course purpose

To be able to really understand programming, one needs to understand programming language constructions precisely. The aim of this course is to present a broad range of programming languages principles, using a rigourous methodology. This means how to design a custom programming language, how different features interact and how they fit in within a certain paradigm. The course covers static (syntax, types systems) and dynamic (transition systems, operational semantics) aspects of programming languages. The main programming language features (functions, data types, subtyping, etc.) will be covered. Emphasis will be placed on reasoning and abstract models, challenging students to critically analyze language design choices 

Schedule

TimeEdit

Course literature

Practical Foundations for Programming Languages (Second Edition) by Robert Harper. Cambridge University Press, 2016.

The book is available at the Chalmers book store.

Course design

The course will consists of a series of seminars, following the course book. Each seminar will feature a short presentation of the concepts, followed by supervised group work (exercises, further reading). Students are required to prepare the material in advance and post a question/comment in the relevant discussion (Canvas). In parallel, students will work in groups on their projects where they can apply the knowledge acquired in the seminars.

Changes made since the last occasion

- 2026: First time the course is given.

Learning objectives and syllabus

Learning objectives:

- Understand the structure of programming languages
- Know some of the principal constructions of programming languages and how they interact
- For each construction, be able to write their static (syntax, types) and dynamic (evaluation) descriptions
- Conceptually develop new language features
- Design a programming language with a mix of advanced features; or a custom programming language for a specific domain.
- Critically assess literature in the field of programming language design and theory.

Link to the syllabus on Studieportalen.

Examination form

  • Active participation in seminars
  • Realization and presentation of a project
  • Critical review of another group's project

Academic honesty

  • Copying from someone else’s solution is considered cheating.
  • Communicating your solutions to other groups is forbidden.
  • Using AI tools (ChatGPT, etc.) is forbidden throughout the entire course.

Course summary:

Course Summary
Date Details Due