Subject Matter

This course is an overview of the internal structure of modern compilers, with an emphasis on implementation techniques. Topics covered include lexical scanning, parsing techniques, static type checking, code generation, dataflow analysis and other optimization techniques, storage management, and execution environments. As part of the course, you will build a working compiler. A compiler's basic function is to translate a high-level source program to a low level object program, but before doing so it must check that the source program is well-formed. So compilation is decomposed in three phases: syntactic analysis, semantic analysis and code generation ["Programming Languges Processors in Java: Compilers and Interpreters", Watt and Brown] . In this course we will take a closer look at this phases.

Organisation

The course will be divided in two parts:
Explanation: In the first part (first two weeks) the basic compiler design concepts will be explained and three semester assignements provided. Attendance is obligatory. Work can be conducted in groups of two and exceptionally groups of three. Question answering: The second part will be conducted as discussion and question answering sessions, where students can get feedback on particular issues found while trying to solve the assignments. Attendance is not obligatory. Assignments must be given in person.

Exercise Groups

1. RR 21 (24 seats) 08:00-10:00 Sinuhe Arroyo 2. RR 15 (47 seats) 08:00-10:00 Ioan Toma 3. RR 15 (47 seats) 10:00-12:00 Francois Scharffe

Exercise Group Distribution: .xls

Due to the limited capacity of the exercise rooms we had to assign some students to different group of choice. We tried really hard to take under consideration your requests. Pleae check the group distribution and in case it is completely impossible for you to attend the assigned group please contact Ioan Toma so we can try to find a solution together.

Schedule

ProgrammeMaterial

October 4

HS B

.pdf

 

October 11

HS B

.pdf

 

October 18

HS B

.pdf

 

October 25

RR15 and RR21

none

 

November 8

RR15 and RR21

none

 

November 15

RR15 and RR21

none

 

November 22

RR15 and RR21

none

 

November 29

RR15 and RR21

none

 

December 6

RR15 and RR21

none

 

December 13

RR15 and RR21

none

 

January 10

RR15 and RR21

none

January 17

RR15 and RR21

none

January 24

RR15 and RR21

none

January 31

RR15 and RR21

none

 

Milestones

 

Assignments and Deadline Solutions

pdf

November 8

pdf

 

pdf (New Version!)

December 6

 

pdf

January 24

 

Evaluation

In order to pass the course students must attend the first two explanatory sessions and deliver on time a report with the correct solutions for all three assignments. Not committing to any of these requirements will result in failing the tutorial.

Course Material

Download the report template here (.doc)

Bibliography

Programming Language Processors in Java: Compilers and Interpreters. David Watt and Deryck Brown. Prentice Hall; 1st edition (April 15, 2000), ISBN: 0130257869.

Lex & Yacc. John R. Levine, Tony Mason, Doug Brown. O'Reilly & Associates 1992. ISBN: 1565920007

Compilers: Principles, Techniques, and Tools. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman. Addison-Wesley Pub Co. ISBN: 0201100886

The Lex and Yacc page: http://dinosaur.compilertools.net/ The manual page of FLEX: http://www.linux.gr/cgi-bin/man2html/usr/share/man/man1/lex.1.gz

Modern Compiler Implementation in Java (Tiger book) A.W. Appel Cambridge University Press, 1998 ISBN 0-52158-388-8

Advanced Compiler Design and Implementation (Whale book) Steven Muchnick Morgan Kaufman Publishers, 1997 ISBN 1-55860-320-4

Engineering a Compiler ( Ark book) Keith D. Cooper, Linda Torczon Morgan Kaufman Publishers, 2003 ISBN 1-55860-698-X


Lecturer

Sinuhe Arroyo
sinuhe.arroyo@deri.org


Time

Tuesdays, 8:00 to 10:00 am, HS B/RR15/RR21


Language

English