# Compiler Design

- Institution: IIT Madras
- Department: Computer Science and Engineering
- Level: Undergraduate
- Language: English
- Subjects: Computer science, Engineering
- Source: [NPTEL](https://nptel.ac.in/courses/106106237)
- Licence: [CC BY-NC-SA](https://nptel.ac.in/faq) (Non-commercial use only.)
- Syllabus: [at the source](https://nptel.ac.in/courses/106106237)
- Who can watch: Tweens profiles and older (sources give no ratings; placed by Invisible Network from the source's own words)

## Lectures

1. [Lec 01 - Introduction- part 1, Programming languages and compilers](https://invisiblenetwork.ai/learn/nptel/106106237/c0c9462fa481) (Video)
2. [Lec 02 - Introduction- part 2, Language translators](https://invisiblenetwork.ai/learn/nptel/106106237/74ac60cde65e) (Video)
3. [Lec 03 - Introduction- part 3, Phases of a compiler](https://invisiblenetwork.ai/learn/nptel/106106237/6ecab21ef18a) (Video)
4. [Lec 04 - Introduction- part 4, Static vs Dynamic contexts,Parameter passing](https://invisiblenetwork.ai/learn/nptel/106106237/721360318fc9) (Video)
5. [Lec 05 - Lexing- part 1, Terminology, Regex, flex tool- part 1](https://invisiblenetwork.ai/learn/nptel/106106237/b44fe59666b1) (Video)
6. [Lec 06 - Lexing- part 2, Lexical errors, Input buffering](https://invisiblenetwork.ai/learn/nptel/106106237/7744c300230a) (Video)
7. [Lec 07 - flex tool- part 2](https://invisiblenetwork.ai/learn/nptel/106106237/a939224b2a7b) (Video)
8. [Lec 08 - Lexing- part 3, Lookahead, KMP string matching](https://invisiblenetwork.ai/learn/nptel/106106237/a294bf2fbf60) (Video)
9. [Lec 09 - Lexing- part 4, Regex to DFA conversion- part 1](https://invisiblenetwork.ai/learn/nptel/106106237/791a186cb4e5) (Video)
10. [Lec 10 - Lexing- part 5, Regex to DFA conversion- part 2, Prasing- part 1](https://invisiblenetwork.ai/learn/nptel/106106237/4228c8ba1528) (Video)
11. [Lec 11 - Parsing- part 2, CFG, Parse tree, Precedence, Ambiguity](https://invisiblenetwork.ai/learn/nptel/106106237/a3f1a74c7ab8) (Video)
12. [Lec 12 - flex tool- part 3](https://invisiblenetwork.ai/learn/nptel/106106237/4e6457c91905) (Video)
13. [Lec 13 - Parsing- part 3, Sentinel forms, Error recovery, if-else ambiguity](https://invisiblenetwork.ai/learn/nptel/106106237/ff75343959d0) (Video)
14. [Lec 14 - Parsing- part 4, Left recursion, Recursive descent parsing](https://invisiblenetwork.ai/learn/nptel/106106237/aa3d30ed5a7c) (Video)
15. [Lec 15 - Parsing- part 5, First and Follow, Predicitive parsing table](https://invisiblenetwork.ai/learn/nptel/106106237/f3b85e66d2b1) (Video)
16. [Lec 16 - Parsing- part 6, Predictive parsing table, LL(1) grammars](https://invisiblenetwork.ai/learn/nptel/106106237/cb64610c7318) (Video)
17. [Lec 17 - Discussions and doubts clarification - part 1](https://invisiblenetwork.ai/learn/nptel/106106237/965b46ec831e) (Video)
18. [Lec 18 - Parsing- part 6, Bottom-up, Shift-reduce parsing, SLR parsing](https://invisiblenetwork.ai/learn/nptel/106106237/d5a337e89184) (Video)
19. [Lec 19 - Parsing- part 6, LR(0) automaton, SLR parsing using automaton](https://invisiblenetwork.ai/learn/nptel/106106237/d114ded2c403) (Video)
20. [Lec 20 - Parsing- part 7, SLR(1) parsing table, SLR(1) parsing algorithm](https://invisiblenetwork.ai/learn/nptel/106106237/7802a4270ee6) (Video)
21. [Lec 21 - Parsing- part 8, Viable prefixes, LR(1) parsing, LR(1) automaton](https://invisiblenetwork.ai/learn/nptel/106106237/49ed8f6cb842) (Video)
22. [Lec 22 - Parsing- part 9, LALR parsing, SDT- part 1, attributes](https://invisiblenetwork.ai/learn/nptel/106106237/23002d3b5ff1) (Video)
23. [Lec 23 - Syntax Directed Translation- part 2, S- and L-attributed SDD](https://invisiblenetwork.ai/learn/nptel/106106237/7439e5934d58) (Video)
24. [Lec 24 - Syntax Directed Translation-part 3, L-attributed SDD, Applications](https://invisiblenetwork.ai/learn/nptel/106106237/364f04594b27) (Video)
25. [Lec 25 - Syntax Directed Translation- part 4, Actions within productions](https://invisiblenetwork.ai/learn/nptel/106106237/e6b0627ce874) (Video)
26. [Lec 26 - Discussions and doubts clarification part 2](https://invisiblenetwork.ai/learn/nptel/106106237/70c2c92e1bbe) (Video)
27. [Lec 27 - Quiz-1 discussion, SDT- part 5, Code generation for while loop](https://invisiblenetwork.ai/learn/nptel/106106237/fecda97d46e7) (Video)
28. [Lec 28 - Intermdiate Code Generation- part 1, Syntax trees and DAGs](https://invisiblenetwork.ai/learn/nptel/106106237/b9dd44765462) (Video)
29. [Lec 29 - Intermdiate Code Generation- part 2, Three-address code](https://invisiblenetwork.ai/learn/nptel/106106237/e22a0fe67f3c) (Video)
30. [Lec 30 - Discussions and doubts clarification part 3](https://invisiblenetwork.ai/learn/nptel/106106237/dbac5cc3b284) (Video)
31. [Lec 31 - Intermdiate Code Generation- part 3, Static single assignment](https://invisiblenetwork.ai/learn/nptel/106106237/57913fa33e59) (Video)
32. [Lec 32 - Intermdiate Code Generation- part 4, IR for type expressions](https://invisiblenetwork.ai/learn/nptel/106106237/3581ad920d63) (Video)
33. [Lec 33 - Intermdiate Code Generation- part 4, IR for array expressions](https://invisiblenetwork.ai/learn/nptel/106106237/d193c362cd5e) (Video)
34. [Lec 34 - Intermdiate Code Generation- part 4, IR for boolean expressions](https://invisiblenetwork.ai/learn/nptel/106106237/9f7c031fac04) (Video)
35. [Lec 35 - Intermdiate Code Generation-part 4, IR for break, continue, switch](https://invisiblenetwork.ai/learn/nptel/106106237/77fdcc20370f) (Video)
36. [Lec 36 - Code Generator- part 1, Introduction, IR and target code](https://invisiblenetwork.ai/learn/nptel/106106237/ee8d7afaeb9f) (Video)
37. [Lec 37 - Code Generator- part 2, Instruction selection, ordering](https://invisiblenetwork.ai/learn/nptel/106106237/8f8946ed43a7) (Video)
38. [Lec 38 - Code Generator- part 2, Basic blocks and CFG](https://invisiblenetwork.ai/learn/nptel/106106237/695cf14c38cb) (Video)
39. [Lec 39 - x86 assembly code](https://invisiblenetwork.ai/learn/nptel/106106237/5767dd977533) (Video)
40. [Lec 40 - Code optimizer- part 1, Local optimizations within a basic block](https://invisiblenetwork.ai/learn/nptel/106106237/7c789cb02ea3) (Video)
41. [Lec 41 - Code optimizer- part 2, Array references, Peephole optimization](https://invisiblenetwork.ai/learn/nptel/106106237/ca6808582d7a) (Video)
42. [Lec 42 - Discussions and doubts clarification part 4](https://invisiblenetwork.ai/learn/nptel/106106237/0798981fc1bd) (Video)
43. [Lec 43 - Code optimizer- part 3, Register allocation, Liveness](https://invisiblenetwork.ai/learn/nptel/106106237/6ea9442f5561) (Video)
44. [Lec 44 - Code optimizer- part 4, Register allocation as graph coloring](https://invisiblenetwork.ai/learn/nptel/106106237/30f8a2fedd09) (Video)
45. [Lec 45 - Discussions and doubts clarification part 5](https://invisiblenetwork.ai/learn/nptel/106106237/a757e60254e1) (Video)
46. [Lec 46 - Code optimizer- part 5, Data flow analysis, Reaching definitions](https://invisiblenetwork.ai/learn/nptel/106106237/545381525434) (Video)
47. [Lec 47 - Discussions and doubts clarification part 6](https://invisiblenetwork.ai/learn/nptel/106106237/b1be53893210) (Video)
48. [Lec 48 - Code optimizer-part 6, DFA for reaching definitions,Live variables](https://invisiblenetwork.ai/learn/nptel/106106237/ac02c9064b91) (Video)
