|
Overview
In this course, the student should learn the basic principles of
compilers and concurrency. Emphasized are parts of the compiler
which are of general interest. On the practical side an interpreter
for a small programming language will be written. The language
used for implementation will be Java.
At the end of the course the student should
- know about the internal structure of a compiler/interpreter
- be able to implement a compiler/interpreter for a simple programming language
- know and be able to use frameworks, patterns, and data
structures common in compilation
- be able to specify the components of a compiler/interpreter
- understand basic concurreny concepts like monitors and semaphores,
and be able to implement and use them in Java
- have gained experience in programming in a group
Contents:
1. Overview Compiler
2. Lexical Analysis
3. Syntactic Analysis
4. Abstract Syntax
6. Semantic Analysis
7. Interpretation
8. Concurrency in Java
9. Basic Concurrency Patterns
The course and the tutorials are given in English.
Bibliography:
Andrew W. Appel,
Modern compiler
implementation in Java. Addison-Wesley, 1997.
Avi Silberschatz, Peter Palvin, Greg Gagne
Applied Operating System Concepts
. John Wiley, 2000.
Doug Lea, Concurrent Programming
in Java -- Design Principles and Patterns. Addison-Wesley, 1997.
Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides,
Design Patterns: Elements of Reusable Object-Oriented Software.
Addison-Wesley, 1995.
Lecturer: Dr. Christoph Zenger
Exam
The Exam is on July, 12th, 8.15. It lasts two hours. It is closed books, but everyone is allowed
to bring to A4 sheets summary. You may write on th front- and backside of
the sheets.
Schedule
Lectures: |
Friday 08:00-11:00, room IN/200 |
Tutorials: |
Friday 11:00-12:00, IN/1 or IN/200
Practical tutorials are held in room IN/1 |
Slides
The slides are available in three formats, PDF, Postscript and HTML.
The PDF format is best read with acroread. The PDF files have
a document structure, so you can click through the slides. Make
sure you use the setting "View visible area".
The Postscript files have 4 slides on each page and are best used
if you want to print the slides.
The HTML format is not completely supported, so it is generally
better to use the first two.
- Compilation: Overview and Foundations
(PDF,
Postscript(4 slides a page),
HTML)
- Project: Java Explorer
(PDF,
Postscript(4 slides a page),
HTML)
- Lexical Analysis
(PDF,
Postscript(4 slides a page),
HTML)
- Parsing (updated from slide 16 for 7.4.)
(PDF,
Postscript(4 slides a page),
HTML)
- Abstract Syntax
(PDF,
Postscript(4 slides a page))
- Abstract Syntax 2
(PDF,
Postscript(4 slides a page))
- Name Analysis
(PDF,
Postscript(4 slides a page))
- Name Analysis (2)
(PDF,
Postscript(4 slides a page))
- Type Analysis
(PDF,
Postscript(4 slides a page))
- Run-time
(PDF,
Postscript(4 slides a page))
- Run-time (2)
(PDF,
Postscript(4 slides a page))
- Reflection
(PDF,
Postscript(4 slides a page))
- Summary Compilation
(PDF,
Postscript(4 slides a page))
- Concurrency
(PDF,
Postscript(4 slides a page))
- Synchronization
(PDF,
Postscript(4 slides a page))
- Synchronization (2)
(PDF,
Postscript(4 slides a page))
- Concurrency Summary
(PDF,
Postscript(4 slides a page))
Project
Jex Specification (errors from class corrected)
PDF
Postscript(4 slides a page)
The project is described here in
French.
Exercises
Here are some review exercises (with solutions). Some of
them are from class, some of them are new.
Contacts
Related Links
|