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
Campus/Online:
Online only
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):
- 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)