Languages and Compilers | Abertay University

Languages and Compilers


This module provides the student with the theory, knowledge, skills and critical framework to understand the role of languages, compilers and virtual machines, particularly for OO languages but also in relation to other programming paradigms. The student wlll also be exposed to a compiler writing technology that they can use to create their own languages and compilers for use in a workflow pipeline.


The aim of this Module is to provide the student with the ability to review, develop, critically evaluate and implement programming languages.

Learning Outcomes

By the end of this module the student should be able to:

1.  compare and contrast programming languages & paradigms

2.  explain the execution-time memory and type operation of object oriented software

3.  interpret language BNF/EBNF specifications, defining BNF for small languages

4.  explain and exemplify the functional and information architecture of a compiler

5.  design and implement compilers for small languages using the recursive-descent methodology

Indicative Content

1 Programming languages and paradigms

imperative; procedural; object-oriented; functional; logic.

2 OO virtual machine operation

processing; stack and heap memory management; type compatibility rules; type management; security.

3 Language specification

formal syntax and informal semantics; Grammars; BNF and EBNF; derivation sequence; LL(1) specifications; the LL() condition.

4 Compiler architecture and organisation

general structure; functional components; data structures for inter-component communication; an OO architecture; scanner implementation using an FSM.

5 Recursive-descent (RD) compiling

RD primitives; RD recognisers; EBNF to code transformations; parser as scanner, semantic analysis and artefact generation driver; semantic analysis; scope and symbol tables; artefact generation strategies.

Statement on Teaching, Learning and Assessment

Current proposal is that topics 1 and 2 of the above suggested content will be taught in parallel with topics 3 to 5; the former at 1 hour per week and the latter at 2 hours per week. Topics 1 and 2 provide a more theoretical overview of the programming language landscape while topics 3 to 5 will be delivered through practical application.

Teaching and Learning Work Loads

Total 200
Lecture 36
Tutorial/Seminar 12
Supervised Practical Activity 24
Unsupervised Practical Activity 0
Assessment 60
Independent 68

Guidance notes

Credit Value – The total value of SCQF credits for the module. 20 credits are the equivalent of 10 ECTS credits. A full-time student should normally register for 60 SCQF credits per semester.


We make every effort to ensure that the information on our website is accurate but it is possible that some changes may occur prior to the academic year of entry. The modules listed in this catalogue are offered subject to availability during academic year 2017/18 , and may be subject to change for future years.