Cornell Computer Science Wikia

CS 4121 - Practicum in Compilers

70pages on
this wiki
Add New Page
Comments0 Share

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

General Information Edit

CS 4120 and CS 4121 are co-requisites and enrollment in one requires enrollment in the other. Total: 5 credits.

Prerequisites Edit

  • CS 2110
  • CS 3410.

Topics Covered Edit

Lexical Analysis (Tokenizing things)

Recursive Descent Parsing

Automated generation of LL(0) and LL(1) parsers (don't worry, this is very intuitive)

Automated generation of LR(0), LR(1), and LALR parsers (also intuitive)


Syntax-directed translations and how to translate your source language into a lower intermediate representation (IR) form

Instruction selection (IR -> assembly) and dynamic programming

Register Allocation

Data/control flow Analysis and other optimization (this is the fun part, you get to learn what complete partial orders and maximal fixed points are)

Memory management

Object Oriented stuff (no one took this seriously)

Workload Edit

Seven programming assignments, a few homeworks (relatively short and easy), and two prelims (open book with Myers, quite challenging). 20 to 40+ hours a week towards the end of the semester (group dependent)

General Advice Edit

Though the prelims were open book and open note, notes didn't help much, unless you thoroughly understood all of them. If you understand all the notes and are reasonably good at problem solving on prelims, you should be fine.

Find a good group.

Testimonials Edit

"You should take compilers.


  • it'll make you good at c++
  • it'll make you good at programming
  • you'll still often have over 100 hours a week to do things that aren't compilers
  • you will learn how to write compilers

you have to take 4121 if you take 4120


Q: Should I take Compilers?

A: Yes.

Q: default

A: You should take Compilers." ~Gregor Stocks

"If you want to truly understand how your program makes things happen in your computer, take this class. If you want to improve your programming skills, take this class. If you have an amazing group who will carry you through this class (and don't mind a non-negligible amount of guilt afterwards), take this class. If you don't meet the previous condition and want to have a lot of free time, don't take this class." - G

Past Offerings Edit

Semester Time Professor Median Grade Course Page
2011 FA Andrew Myers A

Also on Fandom

Random Wiki