ECE 59500 - Introduction to Compilers I: Compiler Basics

Note:

This is a 5-week course for fully online students. On-campus student will take ECE 57300.

Course Details

Lecture Hours: 3 Credits: 1

Areas of Specialization:

  • Computer Engineering

Counts as:

Normally Offered:

Each Fall

Requisites by Topic:

Comfort with programming, especially data structures and recursion. Experience with object-oriented programming is also beneficial.

Catalog Description:

This course is an introductory course on compilers. We will cover the full path that a compiler takes in translating high-level source code (e.g., in a language like C) to assembly code that can be run on a machine. We will cover the processes of translating source code into a compiler's intermediate representation, then generating code from that intermediate representation. Students will also build a basic compiler that translates C code into RISC-V assembly.

Required Text(s):

None.

Recommended Text(s):

  1. Engineering a Compiler , Second Edition , Cooper, Keith, Linda Torczon , Safari, an O'Reilly Media Company , 2011

Learning Outcomes

A student who successfully fulfills the course requirements will have demonstrated an ability to:

  • Explain regular expressions and lexing procedures
  • Explain context-free grammars and LL(1) parsing
  • Explain semantic actions and AST construction
  • Explain how to translate ASTs into executable code
  • Build a basic compiler that can translate a program into executable code

Lecture Outline:

1 Topic
1 Functions
2 Compiling functions
3 Type checking
4 Type checking in compilers
5 Optimization: Peephole
6 Optimization: Common subexpression elimination
7 Optimization: Dead code elimination
8 Local register allocation
9 Global register allocation

Assessment Method:

Problem sets, programming assignments, final exam. (11/2021)