CS536-F21 Intro to PLs and Compilers

Course Information

This is a 3-credit course on compiler design. We will cover the following topics:

Topic # Lectures
Structural overview 1
Finite state machines 2
Regular expressions 1
Scanning, JLex 2
Context-free Grammars 2
Parsing 2
Syntax-directed translation 2
Java Cup 1
Symbol tables 1
Type checking 2
Runtime environments 2
Locals and globals 1
Parameters 1
Intermediate code generation 3
Machine code generation 2
Optimization 2

There will be a large semester-long programming project (broken down into 6 separate assignments) involving writing a compiler for a very simple language. The compiler will be written in Java, using a variety of tools, including Make, JLex, JavaCUP, and Spim. All students will work alone on the first programming assignment. Computer Sciences and Computer Engineering graduate students will work alone on the remaining assignments; undergraduates, special students, and graduate students from other departments have the option of working in pairs.


Your performance in the course will be evaluated based on the following:

Academic misconduct of any kind will not be tolerated.

Scores and feedback for individual assignments will be reported through Canvas


There will be one midterm exam and one final exam totalling 60% of your grade.

  • Midterm (30%): In class.

  • Final (30%)

Exams are closed-book and will consist of both multiple-choice and written questions. The final will be cumulative but with the majority of the exam on the topics covered since the midterm. You are responsible for material covered in the lectures, readings, and assignments. Note that some details may be covered in the readings but not in the lecture and vice versa.

Conflicts: Any date conflicts must be brought to the instructor's attention during the first week of class.

You MUST bring your student ID to identify yourself.


There will be six programming assignments worth a total of 40% of your final grade. Accounts are provided on the CS lab computers for you to do your programming work. See the CS Computer Labs page for more

Collaboration is allowed in pairs if you choose, for students who are not CS or ECE graduate students. You may discuss high-level ideas with your classmates and the instructor/TA. Re-grade requests must be submitted within a week after assignments are graded.

Ask any questions on Piazza (accessible through Canvas). Before posting a question, please search to ensure your question hasn't already been asked and answered.

Late Policy Due to the fact that programming assignments build atop each other, assignments will not be accepted late.