This course covers in detail how to write a compiler, i.e., a program that translates a high-level language into machine code. In fact, all the programming assignments contribute to one large course project: a complete compiler for a simple programming language designed by the students at the beginning of the course.

Perhaps more than any other course in the curriculum, CS 433 ties together a wide range of computer science areas, including data structures, theory, computer architecture, operating systems, programming languages, and software engineering.


Prerequisites: CS 202, CS 301