CSCE 531: Compiler Construction (Spring 2023)

Syllabus (pdf, version 0 of 2023-01-09). See lecture log entry of 2023-02-23 for the new date for the midterm.

Notes
The notes below include material from past offerings of the course.


Proof of correctness of a simple compiler written in Haskell , from [H] (See Syllabus for full reference), used on 2023-01-10, 12, and 14.
Introductory lectures
Lecture notes for Chapter 1 [W]
Lecture notes for Chapter 2 [W]
Lecture notes for Chapter 1 [R] , provided by Dr. Aarne Ranta. Note that all slides for [R] are available at http://www.grammaticalframework.org/ipl-book/.
Transcript of handwritten notes of 2020-01-16 lecture, with an example of use of the technique of loop invariants.
Lecture notes for Chapter 3 [W]
Lecture notes for Chapter 4 [W]
More lecture notes for Chapter 4 [W] , used on 2020-02-11, with Java code for a recursive descent parser for Mini Triangle.
Lecture notes for Chapter 1 [M] , provided by Dr. Jost Berthold through Torben Mogensen.
Transcript of handwritten notes with details of minimization of DFA example from a slide by Dr. Jost Berhold, used in the 2020-01-30 lecture.
Lecture notes for Chapter 2 [M] , provided by Dr. Jost Berthold through Torben Mogensen.
Lecture notes for Chapters 1 and 2 [M] by Cosmin O. Oancea, provided by Dr. Torben Mogensen.
Lecture notes on syntax, with the grammar of the CLite language
Lecture notes on Context-Free Grammars, following sections 2.1-2.3 [M].
Notes for top-down (predictive, LL(1)) parsing used on 2022-03-17.
Transcript of handwritten notes with details of conversion of an NFA to a DFA for SLR table construction from a slide by Dr. Jost Berhold, used in the 2020-02-18 lecture.
Lecture notes for Chapter 5 [W] , on Contextual Analysis (scope and type checking), used in the 2020-02-25 lecture.
Definition of attribute grammar with an example.
Transcript of handwritten notes of 2020-02-25 lecture, with definition of reduce (insert, fold) and map (apply-to-all).
Lecture notes for Chapter 3 [M] by Cosmin O. Oancea, provided by Dr. Torben Mogensen.
Lecture notes for Chapter 4 [R] , provided by Dr. Aarne Ranta. Note that all slides for [R] are available at http://www.grammaticalframework.org/ipl-book/.
Lecture notes for Chapter 3 [M] (Scopes and Symbol Tables).
Lecture notes for Chapter 5 [R] , (Interpreters) provided by Dr. Aarne Ranta. Note that all slides for [R] are available at http://www.grammaticalframework.org/ipl-book/.
Lecture notes for Chapter 4 [M] (Interpretation).
Lecture notes for Chapter 6 [M] on Intermediate Code Generation, modified from slides by Cosmin O. Oancea, provided by Dr. Torben Mogensen.
Lecture notes for Chapter 7 [M] on Machine Code Generation, modified from slides by Cosmin O. Oancea, provided by Dr. Torben Mogensen.
Basic Blocks, from the Dragon Book.
Lecture notes for Chapter 8 [M] on Register Allocation and Liveness Analysis, modified from slides by Cosmin O. Oancea, provided by Dr. Torben Mogensen.
The SimpleSem simulator (java, zip archive).
A Java-based environment for teaching programming language concepts, by Manfred Hauswirth, Mehdi Jazayeri, and Alexander Winzer. A paper presented at FIE '98: Frontiers in Education '98, November 4-7, 1998, Tempe, Arizona.
Sections 6.2-6.6 [W] on functions

Tests

Homework and Projects
See lecture log for a more complete list, which includes assignments for which no handout was given. Assignments should be turned in via the departmental dropbox.
Points per assignment.
HW8 : assigned March 2 and due March 28.
Requirements for Extra Graduate Work.

Lecture Log

Haskell Information

Some useful links: