Design, Definition and Implementation of Programming Languages


Recommended prerequisite for participation in the module

The project builds on knowledge from the project modules 1. - 3. Semester.

Content, progress and pedagogy of the module

This is an English translation of the module. In case of discrepancy between the translation and the Danish version, the Danish version of the module is valid.

That the student learns how to design and implement a programming language and how this process can be supported by formal definitions of language syntax and semantics and techniques and methods of translator-and/or interpreting-construction

All software is written in a programming language and translated or interpreted in order to be executed. Therefore, design, description and construction of programming languages, translators, interpreters and similar tools are core themes of computer science.

Therefore, the project work focuses on ensuring that students understand important underlying concepts in the world of programming languages, why these concepts have arisen and how they are formally described and represented in an implementation. Understanding these topics is fundamental in understanding new and existing programming languages and their applications.

In addition, many techniques and tools, originally developed for languages and translators, are also used in other contexts in programme development.

Learning objectives


  • Understand and explain the basic concepts in a formal definition of the syntax and semantics of a programming language  
  • Document knowledge and overview of the techniques and concepts involved in language design and translation design;  
  • Explain the individual phases and the correlation between the phases in a translator/interpreter;
  • Describe the implementation techniques used in the constructed translator/interpreter;  
  • Use correct terminology


  • Describe the syntax and semantics of a programming language by using appropriate methods for formal definition
  • Implement a translator or interpreter into a specific programming language or an extension to an existing programming language
  • Test the implemented translator or interpreter at all levels: unit, integration and acceptance testing
  • Account for configuration management during the development of translator or interpreter
  • Reason data logically on and with the concepts and techniques involved;


  • Assess the use and usability of known tools and techniques for the definition and implementation of programming languages;  
  • Understand and explain how concrete linguistic concepts are represented at runtime and in formal semantics;

Type of instruction

Project work

The focus of the project is an analysis of a computer science problem, the solution of which can naturally be described in the form of designing a specific programming language.  The project includes a formal definition of relevant central parts of this programming language. Key parts of the programming language are realized by the design of a (prototype) translator/interpreter for the language.

Digital support for competency development in configuration management.

Extent and expected workload

The student is expected to spend 30 hours per ECTS, which for this activity means 450 hours.



Name of examDesign, Definition and Implementation of Programming Languages
Type of exam
Oral exam based on a project
Assessment7-point grading scale
Type of gradingExternal examination
Criteria of assessmentThe criteria of assessment are stated in the Examination Policies and Procedures

Additional information

Contact: Study Board for computer science via or 9940 8854

Facts about the module

Danish titleDesign, definition og implementation af programmeringssprog
Module codeDSNDATB410
Module typeProject
Duration1 semester
Language of instructionDanish and English
Empty-place SchemeYes
Location of the lectureCampus Aalborg
Responsible for the module


Education ownerBachelor of Science (BSc) in Computer Science
Study BoardStudy Board of Computer Science
DepartmentDepartment of Computer Science
FacultyThe Technical Faculty of IT and Design