Introduction to Compilers

ibobev1 pts0 comments

Compilers 2026

Skip to main content

SEARCH:

CS

Cornell<br>more options

CS 4120/4121/5120/5121 : Introduction to Compilers

Spring 2026

Overview

Info

Schedule

Assignments

CMSX

Discussions

Resources

Announcements

Results from the 2023 Compiler Bakeoff are now available.

--><br>The first class meeting will be Wednesday, 21 January 2026 at 2:30pm in Kimball B11

This website is still under construction and some materials are likely to be out of date.

The first six lectures will be offered over Zoom rather than in person. See<br>CMSX or Canvas for the link.

--><br>More signups should be available<br>in the near future. If you have your heart set on being in the course, it<br>should be possible to be in the class even if only remotely.

Have a great summer!

Final grades will be posted soon.

The winners of the

4120 Compiler Bakeoff<br>have been announced.

Course grades have been released.

The first prelim is coming up on March 21. A sample prelim is available on CMSX.

-->

Frequently asked questions:

I didn't enroll in the course in December. Can I still join the course?<br>Almost certainly.<br>When does CS 4121/5121 meet? At the same time as CS 4120/5120.<br>Is there any difference between 4120 and 5120? The latter is for MEng students and requires<br>a little more work on the project and homework assignments.<br>Is this course going to be similar to last<br>time? Yes.<br>When will this course be offered next? Not certain, but probably in Spring 2025.<br>-->

The 2022 Compilers Bakeoff is complete.

-->

Overview

This course offers an introduction to the specification and implementation of modern compilers.<br>Topics covered include lexical scanning, parsing, type checking, code<br>generation and translation, an introduction to optimization, and compile-time<br>and run-time support for modern programming languages. As part of the<br>course, students build an optimizing compiler for a simple language.

“This was absolutely my favorite class I have taken at Cornell...I wish I could convince all my CS friends to take it.”

“This class overall taught me how to be a much much much better programmer.”

“Lectures were fantastic, and assignments were very insightful.”<br>“Writing a compiler was the most fulfilling and educational programming project I have done.”

-->

Course information

Course Staff

Placeholder for staff

The best way to reach the course staff is normally by posting on the discussion<br>forum. We will be using Ed Discussions for this purpose.<br>However, for private correspondence you can email individual staff members.<br>Please do not ask multiple course staff members the same question privately via<br>email; that just wastes our time. Ed is normally the right way to ask<br>questions about course content or assignments.

Prerequisites

Computer Science 3110 and either CS 3410 or 3420.<br>The practicum (CS 4121 or 5121) is a<br>required co-requisite . You may not take CS<br>4120 without taking CS 4121 too, and similarly for CS 5120 and CS 5121. The<br>reason for this is that the group project is part of the grade for both 4120<br>and 4121. Familiarity with programming in Java is also expected.

Most project groups choose to use Java to implement their compiler; however,<br>other languages may be used with the permission of the instructor. It is<br>strongly encouraged to use a language with a strong, static type system<br>and automatic garbage collection.

Course Meetings

Lectures are MWF 2:30–3:20 in Kimball B11

Texts

You are required to read the course notes posted on the web site. These will often contain more<br>detail than what was presented in lecture.

There is no required textbook this semester, but the following textbooks will be helpful sources of<br>information.<br>All of these books will be available on reserve in Uris Library.

Modern Compiler Implementation in Java, 2nd ed.<br>Andrew Appel and Jens Palsberg,<br>Cambridge University Press, 2002. ISBN 0-521-82060-X.

Compilers—Principles, Techniques and Tools<br>(The &ldquo;Dragon Book&rdquo;), 2nd ed.<br>Alfred Aho, Monica Lam, Ravi Sethi and Jeffrey D. Ullman.<br>Addison-Wesley, 2006. ISBN: 0-321-48681-1

Engineering a Compiler.<br>Keith Cooper and Linda Torczon.<br>Elsevier/Morgan Kaufmann, 2004. ISBN 1-55860-698-8.

Advanced Compiler Design and Implementation.<br>Steve Muchnick.<br>Morgan Kaufmann<br>Publishers, 1997. ISBN 1-558-60320-4.

The Java<br>language specification may also be useful to you either online<br>or in its printed form:

The Java Language Specification. James Gosling, Bill Joy, and Guy Steele.<br>Addison-Wesley, 1996. ISBN 0-201-63451-1

Another useful text, on linking and loading, is:

Linkers and Loaders. John R.<br>Levine. Morgan Kaufman, 1999. ISBN 1-55860-496-0

Here are a couple of useful books on coding and software engineering:

Design Patterns: Elements of Reusable Object-Oriented Software. Gamma,<br>Helm, Johnson, Vlissides, Booch. Addison-Wesley, 1995. ISBN 0-201-63361-2

Refactoring: Improving the Design of Existing Code. Martin Fowler.<br>Addison-Wesley, 1999. ISBN 0-201-48567-2.

Coursework

Assignments and Grading

There are...

course compiler isbn compilers assignments time

Related Articles