Undergraduate Course: Compiling Techniques (INFR10053)
Course Outline
School | School of Informatics |
College | College of Science and Engineering |
Credit level (Normal year taken) | SCQF Level 10 (Year 3 Undergraduate) |
Availability | Available to all students |
SCQF Credits | 10 |
ECTS Credits | 5 |
Summary | This course describes the phases of a modern programming language compiler with an emphasis on widely-used techniques. The course project will require students to implement a complete compiler for a simple educational programming language, targeting an abstract machine such as
the JVM. |
Course description |
* Introduction: structure of a compiler
* Lexical analysis: tokens, regular expressions, Lex
* Parsing: context-free grammars, predictive and LR parsing, Yacc
* Abstract syntax: semantic actions, abstract parse trees
* Semantic analysis: symbol tables, bindings, type-checking
* Stack frames: representation and abstraction
* Intermediate code: representation trees, translation
* Basic blocks and traces: canonical trees and conditional branches
* Instruction selection: algorithms for selection, RISC and CISC
* Liveness analysis: solution of dataflow equations
* Register allocation: colouring by simplification, coalescing
* Advanced Topics: automatic parallelisation, popular open-source compilers: GCC, LLVM
Relevant QAA Computing Curriculum Sections: Compilers and Syntax Directed Tools
|
Entry Requirements (not applicable to Visiting Students)
Pre-requisites |
|
Co-requisites | |
Prohibited Combinations | |
Other requirements | This course is open to all Informatics students including those on joint degrees. For external students where this course is not listed in your DPT, please seek special permission from the course organiser.
This course has the following mathematics prerequisites:
1 - General background: integers/real numbers, set theory: union, intersection,...
2 - Graph theory, in particular, directed/undirected graphs, cyclic/acyclic graphs, labeled graphs, trees, subgraph isomorphism, graph colouring.
3 - Algebraic structures, in particular, lattices and join/meet. |
Information for Visiting Students
Pre-requisites | None |
High Demand Course? |
Yes |
Course Delivery Information
|
Academic year 2015/16, Available to all students (SV1)
|
Quota: None |
Course Start |
Semester 1 |
Timetable |
Timetable |
Learning and Teaching activities (Further Info) |
Total Hours:
100
(
Lecture Hours 20,
Seminar/Tutorial Hours 10,
Programme Level Learning and Teaching Hours 2,
Directed Learning and Independent Learning Hours
68 )
|
Assessment (Further Info) |
Written Exam
0 %,
Coursework
100 %,
Practical Exam
0 %
|
Additional Information (Assessment) |
Assessment Weightings
Written Exam 0%, Coursework 100%, Practical Exam 0%
Additional Information (Assessment)
- Four practical compiler exercises (Parser, AST, Semantic analysis, Code generation).
- You should expect to spend approximately 50 hours on the coursework for this course. |
Feedback |
Not entered |
No Exam Information |
|
Academic year 2015/16, Part-year visiting students only (VV1)
|
Quota: None |
Course Start |
Semester 1 |
Timetable |
Timetable |
Learning and Teaching activities (Further Info) |
Total Hours:
100
(
Lecture Hours 20,
Seminar/Tutorial Hours 10,
Programme Level Learning and Teaching Hours 2,
Directed Learning and Independent Learning Hours
68 )
|
Assessment (Further Info) |
Written Exam
0 %,
Coursework
100 %,
Practical Exam
0 %
|
Additional Information (Assessment) |
Assessment Weightings
Written Exam 0%, Coursework 100%, Practical Exam 0%
Additional Information (Assessment)
- Four practical compiler exercises (Parser, AST, Semantic analysis, Code generation).
- You should expect to spend approximately 50 hours on the coursework for this course. |
Feedback |
Not entered |
No Exam Information |
Learning Outcomes
On completion of this course, the student will be able to:
- Ability to analyse compilation tasks and to apply standard compilation techniques
- Ability to develop, implement and apply modifications to standard compilation techniques and algorithms wherever this is necessary.
- Ability to understand and implement design decisions in modern compilers.
|
Reading List
* Andrew W. Appel, Modern Compiler Implementation, Cambridge University Press, 1998. Three versions of this book are available which present code fragments from the compiler in the languages C, Standard ML and Java. Students should use whichever version of the book they prefer.
* Alfred V. Aho, Ravi Sethi, Jeffrey D, Ullman, Compilers: Principles, Techniques and Tools. Addison Wesles, 1986.
* Steven Muchnick, Advanced Compiler Design and Implementation. Morgan Kaufmann, 1997
* Reinhard, Wilhelm, Dieter Maurer, Compiler Design. Addison Wesley, 1995.
* Charles N. Fischer, Richard J. LeBlank, Jr., Crafting a Compiler in C. Benjamin/Cummings, 1991.
* Keith Cooper, Linda Torczon, Engineering a Compiler, Morgan Kaufmann |
Contacts
Course organiser | Dr Christophe Dubach
Tel: (0131 6)50 3092
Email: christophe.dubach@ed.ac.uk |
Course secretary | Miss Beth Muir
Tel: (0131 6)51 7607
Email: beth.muir@ed.ac.uk |
|
© Copyright 2015 The University of Edinburgh - 18 January 2016 4:12 am
|