| Day 
 | Compilation
Concepts Covered 
 | Lab
exercises 
 | 
    
      | 1 
 | 
        Structure of compilers and interpretersIntroduction to scanning and parsing though lex and yacc | 
        Assembly language programming using spim.
Evaluation (i.e. interpretation) of constant expressions
involving arithmetic operations.
 | 
    
      | 2 
 | 
        Scanning theoryIntroduction to attribute evaluation and symbol tablesIntroduction to name and scope analysis, intermediate code
generation, abstract syntax trees, three address codes, instruction
selection through iburg, local register allocation, activation records
and stack allocation for local variables, emitting assembly code for
spim.
 | Evaluation (i.e. interpretation) of
 
 
        Expressions with variables and assignments to variables.Conditional expressions involving relational and
boolean
operations. | 
    
      | 3 
 | 
        Parsing theory.Introduction to declaration processing and type analysis.
 | Compilation of 
 
        Constant expressions involving arithmetic operations.Expressions with variables and assignments to variables.Boolean expressions involving relational operations on
integer expressions. | 
    
      | 4 | Run-time
environment support provided by a compiler. 
 | Declarations of integer and
boolean data types. | 
    
      | 5 
 | Theory of
instruction selection 
 | Compilation of 
 
        Control flow constructs if-then, if-then-else, while-do etc.
Conditional expressions using control flow constructs. | 
    
      | 6 
 | Theory of
instruction selection 
 | Compilation of arrays | 
    
      | 7 
 | Introduction to
gcc 
 | Compilation of function
declarations and calls, parameter passing. |