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.
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
- Enhanced career opportunities
- E&ICT Adacemy, IIT Kanpur Certification
- Recognition and credibility in the industry
- Skill development and professional growth
Prerequisites
- No experience is required. But fundamental knowledge of C/C++ and statistics would be helpful.
Admission Closes on 5 March
Skills Covered
- Business Strategic & Analytics
- Operations Management
- Decision Making Tools
- Finance & Economics
- Marketing Management
- Organizational Behavior and Design
- Human Resource Management
- Breakthrough Management
- Management Communication
- Green Manufacturing
- Ethics & Values in Business
- Interpersonal Skills & Leadership
- Vision to Execution Entrepreneurship
- Micro and Macro Economics
- Leadership & Decision Making
- Frontier Technologies in Manufacturing
- Strategies for Managing Innovation
- Technology Management
- Advance Materials
- Automation & Robotics in Manufacturing
- Computer Integrated Manufacturing Systems
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
- A bachelor's degree with an average score of at least 50%
- Prior knowledge or experience in programming and mathematics
- 2+ years of formal work experience (preferred)
Best Suited For
- Software Engineers
- Freshers
- BI Developers
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