NPTEL : Compiler Design (Prof. Rupesh Nasre) (Computer Science and Engineering)

Co-ordinators : Prof. Rupesh Nasre


Lecture 1 - Introduction - Part 1, Programming languages and compilers

Lecture 2 - Introduction - Part 2, Language translators

Lecture 3 - Introduction - Part 3, Phases of a compiler

Lecture 4 - Introduction - Part 4, Static vs Dynamic contexts,Parameter passing

Lecture 5 - Lexing - Part 1, Terminology, Regex, flex tool- Part 1

Lecture 6 - Lexing - Part 2, Lexical errors, Input buffering

Lecture 7 - flex tool- Part 2

Lecture 8 - Lexing - Part 3, Lookahead, KMP string matching

Lecture 9 - Lexing - Part 4, Regex to DFA conversion - Part 1

Lecture 10 - Lexing - Part 5, Regex to DFA conversion - Part 2, Prasing - Part 1

Lecture 11 - Parsing - Part 2, CFG, Parse tree, Precedence, Ambiguity

Lecture 12 - flex tool - Part 3

Lecture 13 - Parsing - Part 3, Sentinel forms, Error recovery, if-else ambiguity

Lecture 14 - Parsing - Part 4, Left recursion, Recursive descent parsing

Lecture 15 - Parsing - Part 5, First and Follow, Predicitive parsing table

Lecture 16 - Parsing - Part 6, Predictive parsing table, LL(1) grammars

Lecture 17 - Discussions and doubts clarification - Part 1

Lecture 18 - Parsing - Part 6, Bottom-up, Shift-reduce parsing, SLR parsing

Lecture 19 - Parsing - Part 6, LR(0) automaton, SLR parsing using automaton

Lecture 20 - Parsing - Part 7, SLR(1) parsing table, SLR(1) parsing algorithm

Lecture 21 - Parsing - Part 8, Viable prefixes, LR(1) parsing, LR(1) automaton

Lecture 22 - Parsing - Part 9, LALR parsing, SDT- Part 1, attributes

Lecture 23 - Syntax Directed Translation - Part 2, S- and L-attributed SDD

Lecture 24 - Syntax Directed Translation - Part 3, L-attributed SDD, Applications

Lecture 25 - Syntax Directed Translation - Part 4, Actions within productions

Lecture 26 - Discussions and doubts clarification - Part 2

Lecture 27 - Quiz-1 discussion, SDT - Part 5, Code generation for while loop

Lecture 28 - Intermdiate Code Generation - Part 1, Syntax trees and DAGs

Lecture 29 - Intermdiate Code Generation - Part 2, Three-address code

Lecture 30 - Discussions and doubts clarification Part 3

Lecture 31 - Intermdiate Code Generation - Part 3, Static single assignment

Lecture 32 - Intermdiate Code Generation - Part 4, IR for type expressions

Lecture 33 - Intermdiate Code Generation - Part 4, IR for array expressions

Lecture 34 - Intermdiate Code Generation - Part 4, IR for boolean expressions

Lecture 35 - Intermdiate Code Generation - Part 4, IR for break, continue, switch

Lecture 36 - Code Generator - Part 1, Introduction, IR and target code

Lecture 37 - Code Generator - Part 2, Instruction selection, ordering

Lecture 38 - Code Generator - Part 2, Basic blocks and CFG

Lecture 39 - x86 assembly code

Lecture 40 - Code optimizer - Part 1, Local optimizations within a basic block

Lecture 41 - Code optimizer - Part 2, Array references, Peephole optimization

Lecture 42 - Discussions and doubts clarification - Part 4

Lecture 43 - Code optimizer - Part 3, Register allocation, Liveness

Lecture 44 - Code optimizer - Part 4, Register allocation as graph coloring

Lecture 45 - Discussions and doubts clarification - Part 5

Lecture 46 - Code optimizer - Part 5, Data flow analysis, Reaching definitions

Lecture 47 - Discussions and doubts clarification - Part 6

Lecture 48 - Code optimizer - Part 6, DFA for reaching definitions,Live variables