CS424 COMPILERS: THEORY AND PRACTICE (4 Cr.)
COURSE DESCRIPTION
Prerequisite:
CS222 and either CS322 or
CS330, and junior standing, or permission of instructor.
Description
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 |






CS101 CS120 CS120A CS122 CS201 CS222 CS228 CS295 CS297 CS298 CS302 CS322 CS326 CS330 CS370 CS422 CS424 CS426 CS442 CS444 CS446 CS460 CS470 CS480 CS490 CS491 CS495 CS496 CS497 CS498 |