INTRODUCTION

This course describe the understandings of Compiler designing, working and its phases. How they can be built and their proper working on real workspace. This course contains all latest concepts of Compiler like its components, phases, types, tools, regular expressions and finite automata. In computing, a compiler is a computer program that translates computer code written in one  programming language (the source language) into another language (the target language). The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language (e.g., assembly language, object code, or machine code) to create an executable program. A compiler is likely to perform many or all of the following operations: preprocessing, lexical analysis, parsing, semantic analysis (syntax-directed translation), conversion of input programs to an intermediate representation, code optimization and code generation.

COURSE CODE: CSCC-306

CREDIT HOURS: 03

PREREQUISITES: 

  • Strong programming background in C, C++
  • Formal Language (REs,NFAs, DFAs, CFG)

COURSE LEARNING OUTCOMES

At the end of the course the students will be able to:

  • Understand the basic techniques used in compiler construction.
  • Understand the basic data structures used in compiler.
  • Design and implement a compiler using a software engineering approach.

REFERENCE MATERIALS:

1. Engineering a Compiler, Second Edition by Keith Cooper and Linda Morgan Kaufmann; 2ndEdition (February 21, 2011). ISBN
2. Compilers: Principles, Techniques, and Tools, A. V. Aho, R. Sethi and J. D. Ullman,Addison-Wesley, 2nd ed.,
3. Modern Compiler Design, D. Grune, H. E. Bal, C. J. H. Jacobs, K. G. Langendoen, John Wiley, 2003.
4. Modern Compiler Implementation in C, A. W. A University Press, 2004.

COURSE CONTENTS

1. Overview of Compilation: Principles of Compilation, Compiler Structure, High View of Translation, Desirable Properties of a Compiler.

2. Scanners: Recognizing Words, Regular Expressions, Implementing Scanners.

3. Parsers: Expressing Syntax, Top-Down Parsing, Bottom-Up Parsing.

4. Context-Sensitive Analysis: Type Systems, Attribute Syntax-Directed Translation.

5. Intermediate Representations: Graphical IRs, Linear IRs, Mapping Values to Names, Symbol Tables.

6. The Procedure Abstraction: Procedure Calls, Name Spaces, Communicating Values Between Procedures, Standardized Linkages.

7. Code Shape:Arithmetic Operators, Boolean and Relational Operators, Storing and Accessing Arrays, Control-Flow Constructs, Procedure Calls. 

8. Code Optimization: Optimization, Global Optimization, Interprocedural Optimization.

9. Data-Flow Analysis: Iterative Data Inter-procedural Analysis.

COURSE ASSESSMENT:

  • Final Term Exam: 50 Marks
  • Mid Term Exam: 30 Marks
  • Sessional: 20 Marks
    • Quiz: 05 Marks
    • Assignment: 05 Marks
    • Presentation: 05 Marks
    • Attendence: 05 Marks

CLASSES TIMING: 

PPP BSCS 7th A (Thursday: 9:30 - 11:00) (Friday: 9:20 - 10:40)

PPP BSCS 7th B (Monday: 8:00 - 9:30 ) (Tuesday: 9:30 - 11:00)

PPP BSCS 7th C (Monday: 11:00 - 12:30) (Tuesday: 8:00 - 09:30)

Course Material