CS 424 Course Description



Prerequisite: CS222 and either CS322 or CS330, and junior standing, or permission of instructor.

Offered: On Demand


A compiler is a program that translates one computer language to another. In this course, students will learn how compilers work, what makes some languages easier to compile than others, and different approaches to compiler design. Over the course of the semester, the students will build their own compilers.

Course Outline

Week 1: Introduction
Week 2: Compiling a very simple language; Program 1 due
Week 3: Lexical Analysis: what is it, why we need it; Assignment 1 due
Week 4: Context-free grammars and how they relate to compilers; Program 2 due
Week 5: LR parsers, the most common form of compiler today; Assignment 2 due
Week 6: Syntax-directed translation in designing a compiler; Program 3 due
Week 7: Type checking and why it was adopted in modern programming languages; Assignment 3 due
Week 8: Run-time environments, and the handling of scope rules, loops, and conditionals; Prog. 4 due
Week 9: Symbol tables and their uses in both lexer and parser; Assignment 4 due
Week 10: Intermediate code generation and multi-pass compilers; Program 5 due
Week 11: Backpatching and its use in optimization; Assignment 5 due
Week 12: Basic blocks and flow graphs for developing optimization strategies; Program 6 due
Week 13: Peephole optimization
Week 14: Code generators and the usual languages generated; Program 7 due