Compiler Design, Analysis, & Optimization - FDP

Compiler Design, Analysis, & Optimization - FDP

Welcome to the Compiler Design course, where you’ll explore compiler construction from fundamentals to advanced techniques. Topics include the history, linking, lexical and syntax analysis, semantic analysis, and code generation. Practical sessions with Lex and YACC enhance learning. You’ll also delve into abstract syntax trees, type systems, intermediate representations, backpatching, and runtime systems, preparing you to design efficient, robust compilers.

Click or drag a file to this area to upload.

Programming in Python

This course is a concise yet comprehensive program tailored for B.Tech/MCA/BCA/M.Tech students and corporate professionals. Covering Python fundamentals, control flow, functions, file handling, and object-oriented concepts, participants gain hands-on experience to code, analyze data, and develop applications efficiently. No prior experience required, making it ideal for beginners and experienced programmers alike.

Program Duration

30 hours

Learning Format

Self-Paced Learning

Course Price

₹499 (Inc. GST)

Our Alumni Work At

Course Curriculum

  • Motivation
  • History
  • The Big Picture

  • Linking – I
  • Linking – II
  • Linking – III
  • Linking – IV
  • Linking – V
  • Linking – VI
  • Preprocessor and Multifile Compilation

  • What are Compilers
  • Goals of Translation
  • How to Translate?
  • Steps in Translation – I
  • Steps in Translation – II
  • Semantic Analysis
  • Front End Phases
  • Back End Phases
  • Example of Code Optimizations
  • Code Generation
  • Post Translation Optimizations – I
  • Post Translation Optimizations – II
  • Advantage of Analysis Synthesis Model
  • Issues in Compiler Design
  • Tool-based Compiler Development
  • Bootstrapping Example
  • Bootstrapping a Compiler

  • Lexical Analysis
  • Implementing Lexical Analysis
  • The Role of Symbol Table
  • Lexical Analysis: Challenges
  • How to Specify Tokens
  • Regular Expressions and Definitions
  • Transition Diagrams
  • Lexical Analyzer Generators

  • Lex and Yacc: Tutorial – I
  • Lex and Yacc: Tutorial – II
  • Lex and Yacc: Tutorial – III
  • Lex and Yacc: Tutorial – IV
  • Lex and Yacc: Tutorial – V
  • Lex and Yacc: Tutorial – VI
  • Lex and Yacc: Tutorial – VII
  • Lex and Yacc: Tutorial – VIII
  • Lex and Yacc: Tutorial – IX
  • Lex and Yacc: Tutorial – X
  • Lex and Yacc: Tutorial – XI
  • Lex and Yacc: Tutorial – XII
  • Lex and Yacc: Tutorial – XIII
  • Lex and Yacc: Tutorial – XIV

  • Syntax Analysis
  • Syntax Analyzer Issues
  • Ambiguity
  • Resolving Ambiguities
  • Parsing
  • Bottom-up Parsing
  • Shift Reduce Parsing
  • Example of Shift Reduce Parsing
  • Parser Stack and Handle
  • Handle Properties
  • Handle Pruning
  • Conflicts
  • LR Parse Table
  • Using the Parse Table
  • Example of Parsing
  • Parser Configuration and Viable Prefixes
  • LR(0) Items and Closure
  • Goto Operation
  • Parse Table Creation Example
  • Example of Parse Table
  • When to Shift and When to Reduce
  • Computing Follow Set
  • SLR Parse Table
  • SLR Parser Limitation
  • Parse Table Discussion
  • CLR Parser
  • CLR Parser Example
  • CLR and LALR Parse Table
  • Notes on LALR Parsers

  • Abstract Syntax Tree (AST)
  • Computing AST
  • Constructing AST using YACC
  • AST for Various Statements

  • Semantic Analysis
  • Why Semantic Analysis
  • Attribute Grammar Framework
  • Example of Semantic Analysis
  • Synthesized and Inherited Attributes
  • Synthesized Attributes

  • Inherited Attributes
  • Example of Inherited Attribute
  • Dependence Graph
  • Attribute Evaluation
  • Example of Attribute Evaluation
  • L-attributed Grammar
  • Example of Translation Scheme
  • Evaluation of Translation Scheme
  • Another Example
  • Evaluating Inherited Attributes
  • Inherited Attributes on Parser Stack
  • Simulating the Evaluation of Inherited Attributes
  • Algorithm for Inherited Attribute Evaluation
  • Space for Attributes
  • Attribute Storage

  • Introduction to Type Systems
  • Type Systems
  • Type Checking
  • Type Constructors
  • Types and Symbol Table
  • Type Checking of Functions
  • Type Checking of Expressions
  • Type Checking of Statements
  • Equivalence of Types
  • Name-based Equivalence of Types
  • Cycles in Types
  • Type Conversion
  • Type Checking with Conversion
  • Overloading
  • Overloading Resolution
  • Narrowing the Possible Types
  • Polymorphic Functions
  • Type Variables

  • IR and Symbol Tables
  • Issues in IR Design
  • Levels of IRs
  • Three Address Code
  • IR Demos

  • Populating Symbol Table
  • Handling Scopes
  • Structure of Symbol Table
  • Global Symbol Table as a Tree
  • Storage Binding and Symbolic Registers
  • Local Variables in Frames
  • Storing Large Local Data
  • Symbol Table Creation
  • Declarations Processing
  • Nested Scopes
  • Records/structs in Symbol Table
  • Arrays in Symbol Table

  • Intermediate Code Generation
  • Three Address Code (3AC) for Expressions
  • Example of 3AC
  • 3AC for Flow of Control Statements
  • 3AC for Type Conversion
  • 3AC for Boolean (No Short-circuit)
  • 3AC for Boolean (Short Circuit)
  • Short Circuit and If-then
  • Short Circuit and If-then-else
  • Short Circuit for Boolean Expressions
  • 3AC for Case Statement

  • Backpatching
  • Boolean
  • Expression Backpatching
  • Syntax Directed Translation for Backpatching
  • Example of Backpatching
  • Flow of Control Backpatching
  • Scheme to Implement Backpatching – I
  • Scheme to Implement Backpatching – II

  • Procedure Calls
  • Runtime Systems
  • Activation Tree
  • Declarations and Scope
  • Storage Organisation
  • Activation Records (AR)
  • AR Examples – I
  • AR Examples – II
  • AR Examples – III
  • AR Examples – IV
  • AR Examples – V
  • AR Examples – VI
  • AR Examples – VII
  • Issues Related to Runtime systems
  • Storage Allocation Strategies
  • Calling Sequence
  • Long/Unknown Length Data
  • Heap Allocation
  • Accessing Non-locals
  • Lexical Scoping
  • Using Access Links
  • Setting up Access Links
  • Access Link Scenarios
  • Procedures as Parameters
  • Displays
  • Dynamic Scoping
  • Parameter Passing

  • CG Issues
  • Instruction Selection
  • Flow Graph
  • Register Allocation
  • Code Generation Algorithm
  • CG Example
  • CG Using DAG
  • CG using Instruction Reordering
  • Code Generator Generator
  • Sethi Ullman Algorithm: Introduction
  • Labeling
  • Algorithm
  • Example
  • Optimality

Program Outcomes

Master all phases of compiler construction.

Design robust type systems and intermediate representations.

Implement lexical and syntax analysis using Lex and Yacc.

Apply advanced techniques in code generation and optimization.

Build and optimize abstract syntax trees.

Understand and apply error detection, handling, and recovery techniques

Certification Benfits

Prerequisites

Admission Closes on 5 March 

Skills Covered

Know your faculty

Prof. Amey Karakare

Prof. Amey Karakare is a Head Of The Department (HOD) for CSE branch at IIT Kanpur. Developed and maintains Prutor, a renowned Learning Management System (LMS) for programming courses, enhancing the learning experience for students and streamlining tasks for instructors since 2013. Recognized with prestigious awards including the 1989 Batch Faculty Award from IITK Alumni Association and the Best Faculty of the Year 2018 award from the Computer Society of India’s Mumbai Chapter. Offers popular online Python courses that have garnered significant popularity among Indian students and faculty members. Conducts Faculty Development Workshops on diverse topics, including Python programming, Machine Learning, and High-Performance Computing, contributing to educational advancement. Key involvement in high-impact projects sponsored by government agencies, such as setting up Rashtriya Avishkar Labs in over 150 schools and leading the Electronics and ICT Academy at IIT Kanpur, dedicated to training faculty and students.

How this course Benefits you :

  • Explore cutting-edge trends, tools, and methodologies in Compiler Design, Analysis and optimization.
  • Acquire practical experience through Immersive Case Studies and hands-on projects.
  • Develop connections with professionals and alumni for collaboration opportunities.
  • Capstone Projects and Simulated Scenarios.

Who is this course for :

This course is exclusively for faculty members of colleges and universities; it is not available to students or professionals. Please note that payment is non-refundable once processed.

Course Mentor

Dr. Amey Karkare

Dr. Amey Karkare is a Professor in the CSE Department at IIT Kanpur. He completed his Ph.D. from IIT Bombay in 2009 and his B.Tech. from IIT Kanpur in 1998. His areas of interest include Intelligent Tutoring Systems, Program Analysis, Compiler Optimizations, and Functional Programming. He has more than seven years of industrial experience, most of which is in Compiler Optimizations. Dr. Karkare received the prestigious Infosys fellowship during his Ph.D. and P. K. Kelkar Young Research Fellowship at IIT Kanpur.

Course Fee

TOTAL PROGRAM FEE

₹ 499 (Inc. GST)

  • Course Type: Self-Paced Learning
  • Skill Level: Beginner
  • Certificate: Yes

Data Science Course Fee

Best Suited For

Important Dates

22nd September, 2022 (Thursday)

  • Online portal for application opens

18th November, 2022 (Friday)

  • Online portal for application closes

18th November, 2022 (Friday)

  • Receipt of letters of recommendation by Referees closes

23rd November, 2022 (Wednesday)

  • Last date of receipt of physical applications

26th November, 2022 (Saturday)

  • Shortlisting candidates for written test

11th December, 2022 (Sunday) (tentative)

  • Written test at 4 locations (Delhi, Calcutta, Mumbai, Chennai)

14th December, 2022 (Wednesday)

  • Shortlisted candidates for personal interview

1st January, 2023 (Sunday)

  • Personal interview at IIT Kanpur

03rd January, 2023 (Tuesday)

  • Selected candidates for admission

Apply Now

FAQs

E&ICT Academy, IIT K Certification is considered highly valuable and with hands on experience, getting a job would become that much more easy. 

  • B.Tech/MCA/BCA/M.Tech Students
  • Working Professionals from Corporate

No