0% found this document useful (0 votes)
108 views

CS4212 - Compiler Design - CS4212

Uploaded by

Lucas Wee
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
108 views

CS4212 - Compiler Design - CS4212

Uploaded by

Lucas Wee
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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