CIS 3410/7000: Compilers - Spring 2024

Attention

CIS 3410 has been re-numbered to CIS 4521 and will be cross-listed as the masters level course CIS 5521. Aside from the number change, the course content in future offerings will be similar to this version of the class. It will next be offered in Spring 2025.

Course Information

Instructor

  • Steve Zdancewic

    office hours: Mondays 4:00-5:00pm and by appointment, Levine 511

Teaching Assistants

  • Manvi Agarwal

    office hours: Wednesday 5:00-6:00pm, Location: see Ed

  • Nate Hoaglund

    office hours: Wednesday 8:00-10:00am, Location: see Ed

  • Spyros Pavlatos

    office hours: Monday 10-11:00am, Location: see Ed

Coordinates

Homework Projects

  • HW1: Hellocaml!

    • Due: Wednesday, January 31st at 11:59pm

  • HW2: X86lite simulator

    • Due: Wednesday, February 14th at 11:59pm

  • HW3: LLVMlite backend

    • Due: Wednesday, February 28rd at 11:59pm

  • HW4: Oat language compiler v.1

    • Due: Wednesday, March 27th at 11:59pm

  • HW5: Oat language compiler v.2

    • Due: Wednesday, April 17th at 11:59pm

  • HW6: Program Analysis & Optimizations

    • Due: Wednesday, May 1st at 11:59pm

Textbooks and Resources

There is no required textbook for this course. However, you may find the following references useful for digging deeper into course topics.

On Principles of Compiler Construction

  1. Compilers: Principles, Techniques, and Tools (2nd Edition) by Aho, Lam, Sethi, and Ullman

  2. Advanced Compiler Design and Implementation by Muchnick

  3. Modern Compiler Implementation in ML by Appel

On Types and Type Systems

  1. Types and Programming Languages by Pierce

  2. Advanced Topics in Types and Programming Languages by Pierce et al.

On Program Analysis

  1. Principles of Program Analysis by Nielson, Nielson, and Hankin

On OCaml

  1. Introduction to Objective Caml by Jason Hickey

  2. Real World OCaml by Yaron Minsky, Anil Madhavapeddy, and Jason Hickey