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 12-14 U143 6
Common I Tuesday 12-14 U142 7-8,10
Common I Friday 12-14 U23A 5-10
Common I Friday 12-13 U23A 11
H1 TE Thursday 14-15 U8 6
H1 TE Thursday 14-16 U8 7,9-11
H1 TL Thursday 14-16 IMADA ComputerLab 8
H1 TE Friday 08-10 U24 6
H1 TE Friday 14-16 U23A 7,9
H1 TL Friday 14-16 IMADA ComputerLab 8
H1 TE Friday 13-15 U142 11
H2 TE Thursday 08-20 IMADA semi 14
H2 TE Friday 08-20 IMADA semi 14
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.