| Course Code: CS2102 Course Name: Compiler Design Prerequisites: CS1213, CS2201 Syllabus: Foundations of modern compilers: Lexical analysis and DFA-based scanners; Fast parsing techniques; Syntax-Directed Translation (SDT); Context-sensitive analysis; Abstract Syntax Trees (AST) for modern languages; Intermediate Code Generation: Linear vs. Graph-based IR; Three-address code; Static Single Assignment (SSA) form; Introduction to Multi-Level IR (MLIR);Static Analysis & Optimization: Local optimization and Basic Block analysis; Dataflow analysis frameworks (Constant propagation, Liveness analysis, Common Sub-expression Elimination); Control Flow Graph (CFG) optimizations; Loop transformations; Inter-procedural analysis; The Backend: Instruction selection (Maximal Munch, DAG-based); Register allocation (Graph coloring, Linear scan); Instruction scheduling for ILP; Run-time Environments: Just-In-Time (JIT) compilation; Garbage collection algorithms; Virtual Machines and Managed Runtimes; Memory Hierarchy Optimizations: Cache-locality transformations; Data layout optimizations for many-core systems; Programming exercises will be given on implementing key compiler modules, including lexer/parser construction, AST and IR generation, semantic analysis, and basic optimization passes. Texts: 1. K. D. Cooper and L. Torczon, Engineering a Compiler, 3rd Edition, Morgan Kaufmann, 2022. 2. A. W. Appel and J. Palsberg, Modern Compiler Implementation in Java, 2nd Edition, Cambridge University Press, 2002. References: 1. S. S. Muchnick, Advanced Compiler Design and Implementation, 1st Edition, Morgan Kaufmann, 1997. |