Languages and Compilers | Abertay University

Languages and Compilers

Description

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.

Aims

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 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

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

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

Total 200
Lecture 24
Tutorial/Seminar 0
Supervised Practical Activity 0
Unsupervised Practical Activity 36
Assessment 72
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.


Disclaimer

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.