Weekly outline

  • COMPILERS


    Obligations:

    By the end of the course, a student must accomplish the following:

    • Master the syllabus presented during lectures and laboratory practice.
    • Successfully solve the homework assignments (and collect at least 50 out of 100 points).
    • Successfully solve the exam (and collect at least 50 out of 100 points).

    Homework assignments:

    Homework assignments are given during lectures and discussed during laboratory practice. The deadlines for submission of solutions are strict; late submissions are neither checked nor graded. Students assignments are graded during laboratory practice in the students' presence; if a student is not present, the grade is not explained, and no appeal can be made about the grade.

    Exam:

    The exam at the end of the course takes place in the laboratory, hands-on, and lasts 90 minutes. Each student must solve three exercises that require modifications of their homework assignment solutions. No external literature is allowed. At the end, the solutions to the exercises are checked in the student's presence. Students are required to comment on their solutions and may also be asked general questions about compilers.

    Grade:

    The final grade is based on the average of points collected from homework assignments and the exam, as well as on comments and answers given during the oral part of the exam.

    Textbooks:

    1. Andrew W. Appel, Jens Palsberg. Modern Compiler Implementation in Java, 2nd Edition, Cambridge University Press, 2002.
    2. Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools (2nd Edition), Addison-Wesley, 2007.
    3. John R. Levine: Linkers & Loaders, Morgan Kaufmann Publishers, 2000.

    ... and finally: I'm sorry for my imperfect English.

  • 19 February - 25 February

    INTRODUCTION & LEXICAL ANALYSIS

  • 26 February - 3 March

    This week

    SYNTAX ANALYSIS

  • 4 March - 10 March

    ABSTRACT SYNTAX

  • 11 March - 17 March

    SEMANTIC ANALYSIS

  • 18 March - 24 March

    SEMANTIC ANALYSIS

  • 25 March - 31 March

    MEMORY LAYOUT

  • 1 April - 7 April


  • 8 April - 14 April

    INTERMEDIATE CODE GENERATION

  • 15 April - 21 April

    BASIC BLOCKS AND TRACES

  • 22 April - 28 April

  • 29 April - 5 May

  • 6 May - 12 May

    LIVENESS ANALYSIS

  • 13 May - 19 May

    REGISTER ALLOCATION

  • 20 May - 26 May

    PUTTING IT ALL TOGETHER

  • 27 May - 2 June