On successful completion of the compiler course students will be able to describe the various phases of the compiling process, including algorithms and and data structures for their implementation in recursive high-level imperative programming languages.
Objectives
In particular, students will be able to:
0. Slay the dragon (or at least send him to hospital)
1. Explain the theoretical limits and complexity of the various
phases
2. Describe the behavior of the various compiling phases
3. Devise and implement algorithms and data structures for the
various phases
Learning outcomes
Students will be able to:
1. Read and write finite automata and grammars for programming
language constructs
2. Perform lexical analysis and use lexical analyzer generators
3. Perform top-down parsing, bottom-up parsing and use parser
generators
4. Perform semantic analysis including static checking,
intermediate representations and attribute grammars
5. Create symbol tables
6. Perform run-time analysis
7. Perform code generation
8. Perform optimizations
9. Describe the undecidable problems in compiling
10. Describe the NP-Complete problems in compiling
11. Describe the complexity of all compiling phases
Objectives versus outcomes:
Objectives: Related Outcomes
Complexity: 0, 9, 10, 11
Phases: 1, 2, 3, 4, 5, 6, 7, 8
Algorithms & Data Structures: 0, 2, 3, 4, 5, 6, 7, 8
Outcomes versus objectives
Read and devise finite automata and grammars: 0, 2, 3
Lexical Analysis, parsing etc. : 0, 2, 3
Undecidable etc.: 0, 1
Week 7: Module 7
Week 8: Module 8
Lab: Homework 7
Week 9: Module 9
Lab: Homework 9
Lab Exam: Monday November 15
Monday November 22: FINAL EXAM