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.
By the end of this module the student should be able to:
1. compare and contrast programming languages and paradigms
2. explain type systems and runtime support for modern programming languages
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
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
The content is delivered through two seminar-style lectures each week: one thread explores compiler architecture, while the other explores language design and implementation concerns. Each week also features a corresponding unsupervised practical exercise for students, with support provided by teaching staff through office hours and email. The module is assessed through a practical project: students implement and test a compiler for a simple programming language.
Teaching and Learning Work Loads
|Supervised Practical Activity||0|
|Unsupervised Practical Activity||36|
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 2018/19 , and may be subject to change for future years.