Syllabus (pdf, version 1 of 2024-01-08).
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.
Notes for bottom-up (SLR)
parsing.
Notes explaining
the construction from Figure 2.31 to Figure 2.32 [M].
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.
Requirements for Extra
Graduate Work.
Some useful links: