About CS 3020 A

Covers the design and construction of compilers and translation of high-level programming languages to assembly language. Topics include code representation, register allocation, optimization, static analysis, mutable data, garbage collection, and compilation of higher-order language features. Prerequisites: CS 2240, CS 2250.


Prereqs enforced by they system: CS 2240 & CS 2250; Open to Degree and PACE students

Section URL

Section Description

This course covers the design and construction of compilers. You'll learn learn how to translate a series of high-level programming languages all the way into Intel x86 assembly language. The course will be taught using Python and Intel x86 assembly language. Instead of learning about each phase of the compilation process sequentially, we'll start by compiling a tiny language directly into assembly code. Each week, we'll add a new feature to our language, and learn about all the phases needed to compile that feature into assembly. At each step, you'll have a functioning compiler that can run real code; by the end of the course, your compiler will work on a realistic programming language including first-class functions. Topics covered include: 1. representation and analysis of code 2. register allocation 3. static type checking 4. garbage collection 5. code generation 6. optimization

Section Expectation

This course will be structured around lectures and a weekly programming assignment. Each lecture will cover a new language feature and the techniques needed to compile it; in the corresponding programming assignment, you will implement support for the new feature in your own compiler. Students should expect to spend 5-6 hours per week outside of class on the weekly programming assignments. Programming assignments will be completed in Python. The required materials for this course are all freely available online.


Your grade will be based on weekly programming assignments, in-class exercises, and a final project.

Important Dates

Note: These dates may change before registration begins.

Note: These dates may not be accurate for select courses during the Summer Session.

Last Day to Add
Last Day to Drop
Last Day to Withdraw with 50% Refund
Last Day to Withdraw with 25% Refund
Last Day to Withdraw


There are no courses that meet this criteria.

Interest Form

CS 3020 A is closed to new enrollment.

But we can remind you a few days before the next term opens. You can also see what terms are enrolling currently.