Topic outline

  • General

  • Course Information

    Course: Compilation
    Teaching Unit: UEF1
    Instructor: Djamila Mohdeb
    Semester Hour Volume: 14 weeks
    Weekly Hour Volume (in hours):

    • Lecture : 01h30 minutes 
    • Tutorial Session (TD): 01h30 minutes
    • Practical Session (TP): 01h30 minutes
    Coefficient: 03
    Credits: 05
    Evaluation Method: Exam (60%), Continuous Assessment (40%)
    Monitoring Method: Homeworks and Assignments

  • Contact Information

    Instructor: Djamila Mohdeb
    Email: djamila.mohdeb@univ-jijel.dz
    Availability (schedule and location):

    • Offline: /
    • Online: Students can post their questions on the online Forum of this course.


  • Targeted Skills

    Upon completing this course, students will be able to:

    • Understand the overall structure and phases of a compiler.
    • Design and implement lexical analyzers using regular expressions and finite automata
    • Construct context-free grammars and implement parsing techniques
    • Perform semantic analysis, including type checking and symbol table management
    • Generate and optimize intermediate code
    • Translate intermediate code into target machine code
    • Apply various optimization techniques at different compilation stages
    • Implement error handling and recovery mechanisms
    • Utilize compiler-generation tools and automate parts of the compiler construction process
    • Design and implement a basic compiler for a subset of a programming language

  • Prerequisites

    • Fundamental programming skills in a high-level language (e.g., C, C++, or Java)
    • Data Structures and Algorithms
    • Discrete Mathematics
    • Languages and Theory of Computation concepts
    • Basic knowledge of computer architecture and assembly language
    • Familiarity with operating systems concepts
    • Basic understanding of software engineering principles


    Note: While prior knowledge of language theory concepts is beneficial, key topics will be reviewed as needed during the course.

  • Course Outline

    Syllabus

    Chapter 01 : Introduction to Compiler Design
    Chapter 02 : Lexical Analysis
    Chapter 03: Syntactic Analysis (Context-Free Grammars, Top-Down Parsing, Bottom-Up Parsing)
    Chapter 04: Syntax-Driven Translation
    Chapter 05: Type Checking
    Chapter 06: Runtime Environment
    Chapter 07: Code Generation
  • Exchange Space

  • Chapter 01: Introduction to Compiler Design

  • Chapter 02: Lexical Analysis

  • Chapter 03: Syntactic Analysis

  • Chapter 04

  • Chapter 05

  • Chapter 06

  • Chapter 07

  • Practical Sessions

  • Bibliography

    1. Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. (2007). Compilers: Principles, techniques, and tools (2nd ed.). Addison-Wesley.
    2. Appel, A. W. (2004). Modern compiler implementation in C/Java/ML. Cambridge University Press.
    3. Cooper, K. D., & Torczon, L. (2012). Engineering a compiler (2nd ed.). Morgan Kaufmann.
    4. Pittman, T., & Peters, J. (1992). The art of compiler design: Theory and practice. Pearson.
    5. Scott, M. L. (2015). Programming language pragmatics (4th ed.). Morgan Kaufmann.
    6. Muchnick, S. S. (1997). Advanced compiler design and implementation. Morgan Kaufmann.
    7. Mogensen, T. Æ. (2011). Introduction to compiler design. Springer.