The course describes the structure and techniques of the modern compilers for translating programming languages into executable code. Lectures follow the phases of the modern compilers: lexical analysis, syntax analysis, abstract syntax trees, semantic analysis, activation records, intermediate code, basic blocks, instruction selection, liveness analysis, and register allocation.