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.

Notes

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.

Evaluation

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.

Courses may be cancelled due to low enrollment. Show your interest by enrolling.

Deadlines
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

Resources

There are no courses that meet this criteria.

Interest Form

Remind yourself about CS 3020 A.

We'll send you a reminder before Spring 2025 registration begins.

Admin