About This Course

In this course you will learn how to build a compiler. A compiler takes a source language as input and produces a binary that can be directly executed by the computer's hardware. The course is divided into the following five topics:

  1. Introduction to Compilers
  2. Lexical and Syntax Analysis
  3. Front-End
  4. Intermediate Representation
  5. Code Generation

The course will be taught in an inverted mode. Every week we will assign a set of videos that should be watched online. You will also be required to answer a multiple-choice test to ensure that you have understood the material in the videos.

During class hours, we will review together the material in the videos. You should prepare questions and feel free to ask them and discuss them with the group. We will also investigate some extra topics that are not covered in the videos.

During lab hours, you will work on computer assignments in which you will develop the different parts of your own compiler.

Requirements

Students are expected to have good programming skills in C and a basic knowledge of C++. Students should also understand the general concepts of computer architectures and operating systems; in particular they should known how the CPU executes assembly programs and how the memory is organized.