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 & 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
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
|Supervised Practical Activity||24|
|Unsupervised Practical Activity||0|
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.