CS 4120 is an introduction to the specification and implementation of modern compilers. Topics covered include lexical scanning, parsing, type checking, code generation and translation, an introduction to optimization, and compile-time and run-time support for modern programming languages. The course project is to build a working, optimizing compiler that translates an object-oriented language down to runnable x86 machine code. This is done as part of a project group of three or four students.
Computer Science 3110, and 3410 or 3420. The practicum (CS 4121/5121) is a required co-requisite. You may not take CS 4120 (5120) without taking CS 4121 (5121) too. The reason for this is that the group project is part of the grade for both 4120 and 4121. Familiarity with programming in Java is also expected.
CS 4120 is a challenging but rewarding course. CS 5120/5121 is the MEng version of the course. It meets with CS 4120 and covers the same material. If you sign up for 5120/5121 rather than 4120/4121, expect some extra challenges.
CS 4121 meets with CS 4120. Unfortunately the electronic signup system won't let you sign up for two courses that meet at the same time even if they meet in the same room. So if you plan to take this course, sign up for CS 4120 online, and sign up for CS 4121 later by submitting a paper add/drop form.
If you have questions not answered here, please see the course website or send mail to the course instructor.