Compiling Techniques (CT) is a 20 credit course at Level 10, normally taken in Year 3. It runs in Semester 2. There is no exam for this course, the course mark is based 100% on coursework. The University descriptor is here.
The primary aim of this course is to learn how programming languages are "compiled" (translated) into machine code. We will develop the necessary background by directly applying the lecture content while automating the translation of a simple programming language, e.g., a typed subset of python, into RISC-V assembly code.
In the process, we will get to know:
* The overall structure of a compiler * How to translate text into a structured program representation (an abstract syntax tree) * How to detect and report mistakes a programmer may have made while writing the program. * Which program representations are best suited to understand and transform a program, e.g. to optimize its performance. * How to generate efficient assembly code from an internal program representation
This class will teach the theoretical foundations of compilation in a modern and interactive environment that uses state-of-the-art open-source software to enable students to build their theoretical foundations in a practically relevant and accessible environment. Programming assignments will likely use Python, GitHub, as well as Jupyter Notebooks.
Timetable
If you are looking for your class times for this course, these can be found via your University of Edinburgh calendar (links provided below):