Course syllabus

DAT151 / DIT231 Programming language technology lp2 HT23 (7.5 hp)

This course is offered by the department of Computer Science and Engineering.

For more information, see the course home page.

Contact details

Andreas Abel, examiner, course responsible, and lecturer.

Assistant teachers:

Course purpose

Learn how to implement programming languages, in particular, parsing using grammars, type-checking, interpretation, and compilation.  Study the mathematical foundations, such as automata for lexing, shift-reduce parsers, typing rules, operational semantics, abstract machines, and compilation schemes.  For further information, see Studieportalen.


The lectures will be given on campus. For the schedule, consult also the course home page and/or TimeEdit.

Course literature

See the course home page.

Course design

See the course home page.


Changes made since the last occasion

See the course home page.

Learning objectives and syllabus

Learning objectives:

  • define the lexical structure of programming languages by using regular expressions, explain the functioning of finite automata, and implement lexical analyzers by using standard tools;
  • define the syntax of programming languages by using context-free grammars, explain the principles of LL and LR parsing, and implement parsers by using standard tools;
  • define and implement abstract syntax;
  • master the technique of syntax-directed translation and its efficient implementation in their chosen programming language;
  • formulate typing rules and implement type checkers;
  • formulate operational semantic rules and implement interpreters;
  • write simple code generators;
  • be familiar with the basic implementation issues of both imperative and functional languages;
  • use unification to implement polymorphic type checking;
  • use closures to implement functional programming languages.

Link to the syllabus Chalmers.
Link to the syllabus GU (PDF).

Examination form

  1. "Pass" on all 4 assignments (labs).
  2. Written hall exam, determines the grade.

For details, see the course home page.