DM546: Compiler Construction (5 ECTS)

STADS: 15012401

Level
Bachelor course

Teaching period
The course is offered in the spring semester.

Teacher responsible
Email: kslarsen@imada.sdu.dk

Timetable
Group Type Day Time Classroom Weeks Comment
Common I Tuesday 08-10 U154 6-10
Common I Tuesday 08-09 U154 11
Common I Wednesday 10-12 U154 5
Common I Thursday 10-12 U154 5-7,10
Common I Thursday 07-20 IMADA semi 13
Common I Friday 07-20 IMADA semi 13
H1 TL Tuesday 12-14 IMADA ComputerLab 8
H1 TE Wednesday 10-12 U154 6-7,9-11
H1 TE Thursday 14-15 U154 5
H1 TL Thursday 12-14 IMADA ComputerLab 8
H1 TE Friday 12-14 U154 6,9-10
Show entire timetable
Show personal time table for this course.

Comment:
Ubegrænset deltagerantal.

Prerequisites:
None

Academic preconditions:
The student is expected to have knowledge of the material in DM548 Computer architecture and system programming and DM507 Algorithms and data structures. DM553 Complexity and computability should be followed no later than simultaneously with the course.

Course introduction
The purpose of the course is to introduce the concepts and techniques necessary for implementing a modern compiler for a high-level imperative programming language.

The course builds on competences obtained in DM546 Compiler Construction in particular, and gives competences for bachelor thesis work in the area.

With reference to the education's competence profile, the course has focus on
  • solid knowledge of methods from the education's central topics, at a level where these can be applied in concrete setting in an independent manner.
  • knowledge of principles for translation between formal languages.


Expected learning outcome
The learning objective of the course is that the student demonstrates the ability to:
  • design scanners and parsers from top-down as well as bottom-up paradigms both with and without the use of tools and build abstract syntax trees in connection with this.
  • design symbol tables and account for how these are used for type checking and other semantic checks.
  • account for how executable code can be generated from an abstract syntax tree.
  • explain miscellaneous forms of optimization, including details regarding how liveness analysis can be used for register allocation.
  • account for the functionality of the discussed algorithms for garbage collection.
Subject overview
The following main topics are contained in the course:
Scanners, parsers, compiler generation tools, abstract syntax trees, symbol tables, type checking, code generation, optimization, liveness analysis, register allocation, garbage collection.
 


Literature
    Meddeles ved kursets start.


Website
This course uses e-learn (blackboard).

Prerequisites for participating in the exam
None

Assessment and marking:
  1. Oral exam. external censorship, 7-mark scale.
Expected working hours
The teaching method is based on three phase model.
Intro phase: 21 hours
Skills training phase: 21 hours, hereof:
 - Tutorials: 21 hours

Educational activities

Educational form
In the intro phase, concepts, theories and models are introduced and put into perspective.
In the training phase, students train their skills through exercises and dig deeper into the subject matter.
In the study phase, students gain academic, personal and social experiences that consolidate and further develop their scientific proficiency. Focus is on immersion, understanding, and development of collaborative skills.

Language
This course is taught in Danish or English, depending on the lecturer. However, if international students participate, the teaching language will always be English.

Course enrollment
See deadline of enrolment.

Tuition fees for single courses
See fees for single courses.