252-0210-00L  Compiler Design

SemesterSpring Semester 2017
LecturersZ. Majó
Periodicityyearly recurring course
Language of instructionEnglish



Catalogue data

AbstractThis course uses compilers as example to expose modern software development techniques.
Compiler organization. Lexical analysis. Top-down parsing via recursive descent, table-driven parsers, bottom-up parsing. Symboltables, semantic checking. Code generation for a simple RISC machine: conditionals, loops, procedure calls, simple register allocation techniques.
ObjectiveLearn principles of compiler design, gain practical experience designing and implementing a medium-scale software system.
ContentThis course uses compilers as example to expose modern software development techniques. The course introduces the students to the fundamentals of compiler construction. Students will implement a simple yet complete compiler for an object-oriented programming language for a realistic target machine. Students will learn the use of appropriate tools (parser generators); the implementation language is Java. Throughout the course, students learn to apply their knowledge of theory (automata, grammars, stack machines, program transformation) and well-known programming techniques (module definitions, design patterns, frameworks, software reuse) in a software project.
Specific topics: Compiler organization. Lexical analysis. Top-down parsing via recursive descent, table-driven parsers, bottom-up parsing. Symboltables, semantic checking. Code generation for a simple RISC machine: expression evaluation, straight line code, conditionals, loops, procedure calls, simple register allocation techniques. Storage allocation on the stack, parameter passing, runtime storage management, heaps. Special topics as time permits: introduction to global dataflow and its application to register allocation, instruction scheduling, practical application of the techniques and principles presented in the lecture in the context of the OpenJDK HotSpot Java Virtual Machine.
LiteratureAho/Lam/Sethi/Ullmann, Compilers - Principles, Techniques, and Tools (2nd Edition)

Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann Publishers, 1997
Prerequisites / NoticePrerequisites:
Prior exposure to modern techniques for program construction, knowledge of at least one processor architecture at the assembly language level.

Performance assessment

Performance assessment information (valid until the course unit is held again)
Performance assessment as a semester course
ECTS credits8 credits
ExaminersZ. Majó
Typesession examination
Language of examinationEnglish
RepetitionThe performance assessment is only offered in the session after the course unit. Repetition only possible after re-enrolling.
Mode of examinationwritten 120 minutes
Additional information on mode of examination50% of your grade is determined by homework (various assignmentes related to the topic of this course). 50% of the grade is determined by a written 2 hr exam; the exam is given during the official examination period.
Written aids2 sheets of DIN A4 paper (or 4 pages with notes on one side) with handwritten notes.
This information can be updated until the beginning of the semester; information on the examination timetable is binding.

Learning materials

 
Main linkInformation
Only public learning materials are listed.

Courses

NumberTitleHoursLecturers
252-0210-00 VCompiler Design4 hrs
Mon13-15CAB G 61 »
Thu10-12CAB G 61 »
11.05.15-18ETZ G 91 »
15-18ETZ J 91 »
15-18ETZ K 91 »
Z. Majó
252-0210-00 UCompiler Design3 hrs
Thu15-18CHN D 44 »
15-18CHN D 46 »
15-18HG E 33.5 »
15-18HG G 26.3 »
02.03.15-18HG E 5 »
16.03.15-18HG E 5 »
13.04.15-17CHN D 44 »
15-17CHN D 46 »
15-17HG E 33.5 »
15-17HG G 26.3 »
27.04.15-17CAB G 11 »
18.05.15-17HG D 1.1 »
Z. Majó

Groups

No information on groups available.

Restrictions

There are no additional restrictions for the registration.

Offered in

ProgrammeSectionType
Computer Science BachelorMajor in Computer and Software EngineeringOInformation