Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

4/4/24, 11:00 AM CS4212: Compiler Design (Autumn 2023) — CS4212 2023

CS4212: Compiler Design (Autumn 2023)

1. Course Syllabus and Grading Schema [syllabus.html]


2. Software Prerequisites [prerequisites.html]
3. OCaml Style Guide [codestyle.html]

Instructor: Ilya Sergey [https://ilyasergey.net/]

Lectures: Mondays, 3:00pm-6:00pm

Location: COM1-0212

Teaching Assistant: Vladimir Gladshtein [https://volodeyka.github.io/]

The 2023 edition of CS4212 is over. Compiler Design will return in Autumn 2024!

Lectures
Week 01: Introduction [W01 Slides [_static/lectures/PLDI-Week-01-Intro.pdf]]
[W01 Code [https://github.com/cs4212/week-01-simple-2023]]

Week 02: X86Lite [W02 Slides [_static/lectures/PLDI-Week-02-x86lite.pdf]]


[W02 Code [https://github.com/cs4212/week-02-x86lite]] [X86lite
Specification [hw02-x86lite-spec.html#x86-spec]]

Week 03: Compiling Function Calls to X86 [W03 Slides


[_static/lectures/PLDI-Week-03-irs.pdf]] [W03 Code
[https://github.com/cs4212/week-03-intermediate-2023]]

Week 04: (Ilya is away) Intermediate Representations and LLVM [W04 Slides
[_static/lectures/PLDI-Week-04-llvm.pdf]] [W04 Code
[https://github.com/cs4212/week-04-llvm-demo]]

Week 05: LLVMlite and Lexing [W05 Slides [_static/lectures/PLDI-Week-05-


lexing.pdf]] [W05 Code [https://github.com/cs4212/week-05-lexing]]
[LLVMlite Specification [hw03-llvmlite-spec.html#llvmlite-spec]]

https://ilyasergey.net/CS4212/ 1/4
4/4/24, 11:00 AM CS4212: Compiler Design (Autumn 2023) — CS4212 2023

Week 06: Lexing (cont’d) and Parsing [W06 Slides [_static/lectures/PLDI-


Week-06-parsing.pdf]] [W06 Code [https://github.com/cs4212/week-06-
parsing]]

Week 07: Parsing (cont’d) [W07 Slides [_static/lectures/PLDI-Week-07-more-


parsing.pdf]] [W07 Code [https://github.com/cs4212/week-07-more-parsing]]

Week 08: First-Class Functions, Lambda Calculus [W08 Slides


[_static/lectures/PLDI-Week-08-lambda.pdf]] [W08 Code
[https://github.com/cs4212/week-08-lambda-2023]]

Week 09: Types and Type Checking [W09 Slides [_static/lectures/PLDI-Week-


09-typing.pdf]] [W09 Code [https://github.com/cs4212/week-08-lambda-
2023]] [Oat v.1 typing [_static/oat-v1-typing.pdf]]

Week 10: Advanced Typing [W10 Slides [_static/lectures/PLDI-Week-10-


more-typing.pdf]] [W10 Code [https://github.com/cs4212/week-08-lambda-
2023]] [Java Arrays [https://github.com/cs4212/week-10-java-arrays]] [Full
Oat [_static/oat-full.pdf]]

Week 11: Code Optimizations and Dataflow Analysis [W11 Slides


[_static/lectures/PLDI-Week-12-dataflow.pdf]]

Week 12: Register Allocation and Wrap-Up [W12 Slides


[_static/lectures/PLDI-Week-13-regalloc.pdf]]

Homework Projects
TBA

Textbooks and Additional Resources


On General Principles of Compiler Construction

1. Compilers: Principles, Techniques, and Tools (2nd Edition)


[https://www.amazon.com/Compilers-Principles-Techniques-Tools-
2nd/dp/0321486811] by Aho, Lam, Sethi, and Ullman

2. Advanced Compiler Design and Implementation


[https://www.amazon.com/Advanced-Compiler-Design-Implementation-

https://ilyasergey.net/CS4212/ 2/4
4/4/24, 11:00 AM CS4212: Compiler Design (Autumn 2023) — CS4212 2023

Muchnick/dp/1558603204/] by Muchnick

3. Modern Compiler Implementation in ML [https://www.amazon.com/Modern-


Compiler-Implement-Andrew-Appel/dp/0521607647] by Appel

On Compiling Functional Languages

1. The Implementation of Functional Programming Languages


[https://www.microsoft.com/en-us/research/wp-
content/uploads/1987/01/slpj-book-1987-small.pdf] by Simon Peyton Jones

On Types and Programming Language Foundations

1. Types and Programming Languages


[https://www.cis.upenn.edu/~bcpierce/tapl/] by Pierce

2. Advanced Topics in Types and Programming Languages


[https://www.cis.upenn.edu/~bcpierce/attapl/] by Pierce et al.

3. Software Foundations [https://softwarefoundations.cis.upenn.edu/] by


Pierce et al.

On Program Analysis

1. Static Program Analysis [https://cs.au.dk/~amoeller/spa/] by Anders Møller


and Michael I. Schwartzbach

2. Principles of Program Analysis


[https://www.springer.com/gp/book/9783540654100] by Nielson, Nielson,
and Hankin

On OCaml

1. Real World OCaml [https://dev.realworldocaml.org/] by Yaron Minsky and


Anil Madhavapeddy

2. Introduction to Objective Caml [./resources/ocaml-book.pdf] by Jason


Hickey

Copyright

https://ilyasergey.net/CS4212/ 3/4
4/4/24, 11:00 AM CS4212: Compiler Design (Autumn 2023) — CS4212 2023

Most of the materials and assignments for this module have been adapted, with
permission, from the UPenn’s compiler class by Steve Zdancewic
[https://www.cis.upenn.edu/~stevez/].

Indices and tables

Index [genindex.html]

Search Page [search.html]

https://ilyasergey.net/CS4212/ 4/4

You might also like