COURSE SYLLABUS

Compiler Construction 7.5 Credits

Kompilatorteknik
Second cycle, D7011E
Version
Course syllabus valid: Autumn 2016 Sp 1 - Present
The version indicates the term and period for which this course syllabus is valid. The most recent version of the course syllabus is shown first.

Syllabus established
by the Department of Computer Science and Electrical Engineering 28 Feb 2007

Last revised
by Jonny Johansson, HUL SRT 15 Feb 2016

Education level
Second cycle
Grade scale
G U 3 4 5
Subject
Computer Science
Subject group (SCB)
Computer Technology

Entry requirements

Good knowledge of imperative programming (D0009E) and object-oriented programming & design (D0010E). Functions and relations, set theory, state automata (M0009M). Searching and sorting, common data structures like queues, stacks, lists, trees and graphs (D0012E). Stack-based assembly programming (D0013E).


More information about English language requirements


Selection

The selection is based on 20-285 credits



Course Aim

The student shall be able to

-       Demonstrate the ability to identify and formulate compilation of a high-level programming language into executable machine code as a multi-phase translation process.

-       Demonstrate the ability to implement a compiler for a non-trivial language using appropriate methods.

-       Demonstrate the ability to present and discuss the technological solutions chosen for such an implementation in writing, in an international context.

-       Demonstrate a considerable degree of specialized knowledge in the theoretical foundations of compiler technology.

-       Demonstrate the competence and skill to systematically use proven tools for compiler construction.

-       Demonstrate the ability to analyze and critically evaluate different aspects of modern high-level languages on basis of their underlying implementation techniques.


Contents

The organization of a compiler as a multi-phase translation process. Lexical analysis, syntax analysis, and translation into abstract syntax. Regular expressions and grammars, lexer and parser generators. Identifier handling and symbol table organization. Type-checking, logical inference systems. Intermediate representations and transformations for different languages. Code optimization and register allocation. Machine code generation for common architectures.


Realization

Teaching consists of lectures, seminars and laboratory work. Lab assignments are reported in writing or by demonstration, and may be associated with a deadline. Homework assignments that render credit marks on the subsequent written exam may also occur during the course.


Examination

Written exam as well as written or oral lab assignment reports. Passing the lab assignment part of the course requires a passed grade on all individual assignments.


Remarks

Credits for this course cannot be combined with credits for SMD002.


Examiner
Per Lindgren

Literature. Valid from Autumn 2007 Sp 1 (May change until 10 weeks before course start)
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman. Compilers: principles, techniques and tools (2nd ed.), Addison Wesley, 2007, ISBN: 0321486811.

Course offered by
Department of Computer Science, Electrical and Space Engineering

Items/credits
NumberTypeCreditsGrade
0001Written exam4.5G U 3 4 5
0002Laboratory work3.0U G#

Study guidance
Study guidance for the course is to be found in our learning platform Canvas before the course starts. Students applying for single subject courses get more information in the Welcome letter. You will find the learning platform via My LTU.