[Home] [Enter] [Syllabus] [Labs]

Syllabus

Objectives and Outcomes

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

Grading

Schedule

Subject to Change