Design, Definition and Implementation of Programming Languages

2020/2021

Content, progress and pedagogy of the module

PURPOSE
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


REASONS

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

Knowledge

  • 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

Skills

  • 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

Competences

  • 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

Exam

Exams

Name of examDesign, Definition and Implementation of Programming Languages
Type of exam
Oral exam based on a project
ECTS15
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 cs-sn@cs.aau.dk or 9940 8854

Facts about the module

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

Organisation

Study BoardStudy Board of Computer Science
DepartmentDepartment of Computer Science
FacultyTechnical Faculty of IT and Design