BSc:Fundamentals
Compilers Construction
- Course name: Compilers Construction
- Course number: XYZ
- Knowledge area: Software Engineering
Administrative details
- Faculty: Computer Science and Engineering
- Year of instruction: 4th year of BS
- Semester of instruction: 1st semester?
- No. of Credits: 6 ECTS
- Total workload on average: 216 hours overall
- Frontal lecture hours: 2 per week
- Frontal tutorial hours: 2 per week
- Lab hours: 2 per week
- Individual lab hours: 0
- Frequency: weekly throughout the semester
- Grading mode: letters: A, B, C, D
Course outline
The software development process and the depth of programming cannot be understood without a detailed analysis of the compilation process, from the lexical analysis to the syntactical and semantic analysis up to code generation and optimization, and without understanding both strength and limitation of this process. This course dig deeper into this topic building on the fundamental notions studied in theoretical computer science of which is the natural continuation. The typical compiler pipeline will be studied and a project will allow students to practice with the relevant tools.
Expected learning outcomes
- Understanding in depth the compilation process
- Realizing the limits of the process and of Semantic Analysis
- Read and write grammars for programming language constructs
- Perform lexical analysis and use lexical analyzer generators
- Perform top-down parsing, bottom-up parsing and use parser generators
- Perform semantic analysis
Expected acquired core competences
- Programming languages and grammars
- BNF and its use
- Automata and their use
- Parsers in the compilation process
- Tools: Flex and Bison
- Static analysis
Prerequisites
- Introduction to Programming I
- Introduction to Programming II
- Discrete math and logic
- Theoretical Computer Science
- Computer Architecture
Detailed topics covered in the course
The topics below are presented with the granularity of at most the academic hour of instruction. For each topic it is specified if it an Introduction to the topic, a Deep explanation, or a Review of a subject already covered in another course.
- Overview of Compilers (I)
- Lexical Analysis (D)
- Grammars and Parsing (D)
- Bottom-Up Parsing (D)
- Semantic Analysis (D)
- Limitation of semantic analysis(R)
- Symbol Tables & Run-time Systems (D)
- Code Generation & Control Flow Analysis (D)
- Data Flow Analysis (D)
- Optimization (I)
Textbook
Reference material
- Slides will be provided during the course
Required computer resources
Students are required to have laptops.
Evaluation
- Mid-term exam (30%)
- Final exam (40%)
- Project (30%)