Design, Definition and Implementation of Programming Languages


Content, progress and pedagogy of the module

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 compiler and/or interpretor construction


All software is written in a programming language and translated or interpreted to be executable. The design, description and construction of programming languages, compilers, interpreters and similar tools are therefore central topics in computer science.

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

Furthermore, many techniques and tools, originally developed for languages ​​and compilers, are also used in other contexts of program development

Learning objectives


  • understand and explain the basic concepts in a formal definition of a programming language's syntax and semantics
  • document knowledge and overview of the techniques and concepts involved in language design and compiler construction
  • explain the individual phases and the relationship between the phases of a compiler or interpreter
  • explain the implementation techniques used in the engineered compiler / interpreter
  • use correct subject terminology


  • describe the syntax and semantics of a programming language using relevant formal definitions
  • implement a compiler or interpreter for a specific programming language or for an extension of an existing programming language
  • test the implemented compiler or interpreter at all levels: unit, integration and acceptance test
  • explain configuration management during the development of the compiler or interpreter
  • from a computer science perspective reason about the concepts and techniques involved


  • assess the use and applicability of known tools and techniques for defining and implementing programming languages
  • understand and explain how specific linguistic concepts are represented at running time and in formal semantics

Type of instruction

Project work

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

Digital support for competency development in configuration management

Extent and expected workload

It is expected that the student uses 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: The Study board for Computer Science at or 9940 8854

Facts about the module

Danish titleDesign, definition og implementering af programmeringssprog
Module codeDSNCSITK221
Module typeProject
Duration1 semester
Language of instructionEnglish
Empty-place SchemeYes
Location of the lectureCampus Aalborg
Responsible for the module


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