Module Code | CSU33071 |
Module Name | Compiler Design I |
ECTS Weighting [1] | 5 ECTS |
Semester Taught | Semester 2 |
Module Coordinator/s | Prof John Waldron |
Module Learning Outcomes
On successful completion of this module, students will be able to:
- Define the phases of a typical compiler, including the front and back end;
- Identify tokens of a typical high level programming language define regular expressions for tokens and design implement a lexical analyzer using a typical scanner generator;
- Explain the role of a parser in a compiler and relate the yield of a parse tree to a grammar derivation design and implement a parser using a typical parser generator;
- Apply an algorithm for a top down or a bottom up parser construction construct a parser for a small context free grammar;
- Explain the role of a semantic analyzer and type checking create a syntax directed definition and an annotated parse tree describe the purpose of a syntax tree;
- Explain the role of different types of runtime environments and memory organization for implementation of typical programming languages;
- Describe the purpose of translating to intermediate code in the compilation process;
- Design and implement an intermediate code generator based on given code patterns.
Module Content
- Introduction;
- Lexical Analysis;
- Finite Automata;
- Parsing;
- Top-Down Parsing;
- Bottom-Up Parsing I;
- Bottom-Up Parsing II;
- Semantic Analysis and Type Checking;
- Runtime Organization;
- Code Generation;
- Operational Semantics;
- Local Optimization;
- Global Optimization;
- Register Allocation;
- Garbage Collection.
Teaching and Learning Methods
Lectures, laboratories, tutorials.
Assessment Details
Assessment Component | Brief Description | Learning Outcomes Addressed | % of Total | Week Set | Week Due |
Examination | Semester 1 exam 100% In person written 2 hour examination. | All | 100% | N/A | N/A |
Reassessment Details
Supplemental exam 100% In person written 2 hour examination.
Contact Hours and Indicative Student Workload
Contact Hours (scheduled hours per student over full module), broken down by: | 44 hours |
Lecture | 22 hours |
Laboratory | 11 hours |
Tutorial or seminar | 11 hours |
Other | 0 hours |
Independent Study (outside scheduled contact hours), broken down by: | 72 hours |
Preparation for classes and review of material (including preparation for examination, if applicable) | 36 hours |
Completion of assessments (including examination, if applicable) | 36 hours |
Total Hours | 116 hours |
Recommended Reading List
N/A
Module Pre-requisites
Prerequisite modules: N/A
Other/alternative non-module prerequisites: N/A
Module Co-requisites
N/A