Instructor:

Steve Zdancewic
    e-mail: cis341 (AT) seas.upenn.edu
    office hours: Tuesday 3:30-5:00pm (and by appointment) Levine 511

Teaching Assistants:

Dmitri Garbuzov
      e-mail: cis341 (AT) seas.upenn.edu
      office hours: Thursday 3:30-5pm, Levine 5th floor

Rohan Shah
      e-mail: cis341 (AT) seas.upenn.edu
      office hours: Monday 5-7pm, Levine 5th floor

Mitchell Stern
      e-mail: cis341 (AT) seas.upenn.edu
      office hours: Wednesday 6-7:30pm, Levine 5th floor

Course information:

  time: noon - 1:30
  room: Towne 321
  piazza: cis341

Prerequisites: CIS 121 and CIS 240

Topics:

Reading and References

The following books contain useful course material, and much of the lecture content is derived from them (and other sources).

In addition, the following papers and web sites provide supplementary material. Reading selections from these sources will be announced in class.

Projects: The Quaker OAT Compiler

There are a total of 8 homework projects. Homework 1 is an individual assignment. The rest of the projects are pair-programming projects -- students are strongly encouraged to work in pairs, but may ask permission to work alone on them.

Submit

Here are instructions for getting access to the tools you need to complete course assignments.

Grading Criteria

Check your current scores.

Lecture Slides and Notes

Note: The following schedule is tentative!
Date Topic Slides Handouts
1/13

1/15
Introductions: Compilers, Interpreters, and OCaml lec01.pdf
lec01.zip
1/20
OCaml Crash Course: Translating Simple to OCaml lec02.pdf
lec02.zip
1/22
X86lite Metaprogramming lec03.pdf
lec03.zip
1/27
X86lite programming / C calling conventions lec04.pdf
lec04.zip
1/29
Intermediate Representations I lec05.pdf
lec05.zip
2/3
Intermediate Representations II lec06.pdf
See ir3.ml, ir4.ml and,ir4.ml in lec05.zip
2/5
Structured Data lec07.pdf
lec07.zip
2/10
Structured Data in the LLVM IR, LLVMlite lec08.pdf
2/12
Lexing: DFAs and ocamllex lec09.pdf
lec09.zip
2/17
Parsing I: Context Free Grammars lec10.pdf
lec10.zip
2/19
Parsing II: LL(k) parsing, LR(0) parsing lec11.pdf
lec11.zip
2/24
Parsing III: LR(1) Parsing and Menhir lec12.pdf
lec12.zip
2/26
Typechecking: Inference Rules (none)
oat0-defn.pdf
3/3
Type-directed Compilation lec14.pdf
3/5
Midterm Exam
3/10
no class
Spring Break
3/12
no class
Spring Break
3/17
First-class Functions: Interpretation and Typechecking lec15.pdf
fun.ml
3/19
Closure Conversion; Types and Subtypes lec16.pdf
lec16.zip
3/24
Types II lec17.pdf
3/26
Objects and Dynamic Dispatch lec18.pdf
3/31
Multiple Inheritance, Intro to Optimizations lec19.pdf
lec19.zip
4/2
Optimizations / Dataflow Analysis I lec20.pdf
4/7
Dataflow Analaysis II lec21.pdf
4/9
Control Flow Analysis lec22.pdf
4/14
Control Flow Analysis, SSA with Phi nodes lec23.pdf
4/16
Register Allocation / Intro to Memory Management lec24.pdf
4/21
GC and Copying Collection / Intro to Compiler Verification lec25.pdf
4/23
Compiler Verification II lec26.pdf
4/28
Course Wrap-up lec27.pdf
4/30
lecXX.pdf
5/7
Final Exam: 9:00 AM Moore 216
*Prof. Zdancewic will be absent.

Many of the slides in these lectures have been adapted (with permission) from course materials by Andrew Myers at Cornell University and Greg Morrisett at Harvard University.

Course Policies

General Project Guidelines

Submission Policy

Academic Integrity

This course will abide by the University's Code of Academic Integrity. In particular, for individual projects and group projects, the following guidelines should be followed:
Last modified: Tue May 5 12:49:41 EDT 2015