CS 8803 O08: Compilers - Theory and Practice

Course Creators and Instructors

 Santosh Pande
 
Santosh Pande
Creator, Instructor
 

Overview

The objective of this course is to learn the theory and practice behind building automatic translators (compilers) for higher level programming languages and to engineer and build key phases of a compiler in Java or C++ for a small language. 

Topics
  • Front End: Compiler phases and overall working, Scanners (Regular Expressions, NFA/DFA, Scanner Generators), Parsers (Grammars, Ambiguity Removal, LL, LR and other deterministic parsing), Semantic Analysis (Symbol Tables, Syntax Driven Analysis, Type Systems, Attribute Grammars)
  • Middle End: Intermediate Forms, Syntax Directed Translation, Translation of: Expressions, Control Structures and Back-patching, Function and Procedure Calls, Runtime Organization
  • Back-end: Instruction Selection, Register Allocation, Instruction Selection, Code layout and Code Generation, Brief Introduction to Code Optimizations 

Prerequisites

Good knowledge of data structures and algorithms, good programming skills and ability to write sizeable software in Java or C++. Should be able to work in Linux environment.

Grading

Detailed grading criteria will be provided for each deliverable. The following shows how each graded item counts towards your overall grade for the course:

  • Homework: About 4 exercises (some of them could involve programming, some just paper and pencil exercises): 30%
  • Mini-projects: A series of  projects to build a working compiler in a phased manner – spread out throughout the semester 35%
  • Finals: 35% (comprehensive covering all the topics) 

Required Course Readings

  • Engineering A Compiler (2nd Edition) - Authors: Keith D. Cooper and Linda Torczon, Morgan Kaufmann Publishers 2nd Edition (February 21 2011)

    • ISBN 10: 012088478X

    • ISBN 13: 978-0120884780

  • Supplement : Course slides and handouts: To be posted on T-square 

Minimum Technical Requirements

Students will be given accounts on the deepthought cluster at Georgia Tech and will work in a Linux environment.

Academic Honesty 

All Georgia Tech students are expected to uphold the Georgia Tech Academic Honor Code.