| 
 | 
    After discussion with some of you and other people, I have decided to
    drop the project. I misestimated the amount of work involved in it,
    it simply is too big for this class.
    We will still do small programming exercises, but this
    leaves also more room for blackboard exercises.
    The planned schedule for the next weeks is as follows:
    
      -  11.05.: Abstract Syntax / Blackboard Exercises (Automata) 
 
      -  18.05.: Blackboard Exercises (Parsing) / Programming Exercise 
 
      -  25.05.: Visitors
 
      -  01.06.: Blackboard Exercises / Programming Exercise
 
      -  08.06.: Name Analysis 
 
      -  15.06.: Blackboard Exercises / Programming Exercise
 
      -  22.06.: Interpretation 
 
     
    
Overview
      
     In this part of the course, the student should learn the basic
     principles of compilers. 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
     
 -  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
      
     This part of the course is given in English.
     
      Bibliography: 
      
       - Andrew W. Appel,
	   Modern compiler
	   implementation in Java. Addison-Wesley, 1997.
 
       - Niklaus Wirth. 
	   Compiler Construction. Addison-Wesley, 1996.
 
       - Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman,
	   Compilers Principles, Techniques, and Tools. Addison-Wesley, 1985.
 
        - Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides, 
	   Design Patterns: Elements of Reusable Object-Oriented Software.
	   Addison-Wesley, 1995.
 
       
     Lecturer: Dr. Christoph Zenger
     
Schedule
     
     
     
     | Lectures: | 
     Friday 8:00-10:00, room CO2 | 
      
     
     | Tutorials: | 
     Friday 9:00-10:00, IN/1 or CO2 
     Practical tutorials are held in room IN/1 | 
      
      
     
     
Exam
     The exam is on July, 10th, 8.15. It is closed books, but everyone is allowed
     to bring two A4 sheets summary. You may write on the front- and backside of
     the sheets.
     It will last 90 min.
     
Slides
     The slides are available in three formats, PDF, Postscript, and 4-sided Postscript.
     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 4-sided Postscript files have 4 slides on each page and are best used
     if you want to print the slides.
   
     
Exercises
 
Each of the course sessions is accompanied by an exercise
sheet consisting of two parts:
- A keywords section contains a couple of essential
    notions presented during the course. Be aware that this
    list cannot - and is not intended to - be complete. It
    should rather be considered as a starting point for a
    brief repetition of the course material. We recommend to
    invest five to ten minutes (which is not much, but will
    pay off for sure) into each week's keywords section, trying
    to recall the notions and discuss them with other students.
    Writing down explanations, on the other hand, should not
    be necessary.
 
- An exercise section is dedicated to an exploration
    of the background material provided during the sessions.
    We would like to encourage all
    students to hand in solutions to the exercises, which are
    then corrected individually. Hand-ins of teams of students
    are highly appreciated.
  
Solutions
The solutions of the programming exercises are each contained
in the following programming exercise.
             
Contacts
     
Newsgroup
     
     We have opened a newsgroup epfl.di.cours.dsc.compilation. for the discussion
     of course topics.
Related Links
     
     
	
     
 |