CIS 341: Compilers - Spring 2022


If you have recently registered for the course, please see the additional information on Piazza, and contact the course staff if you need help.

Course Information


  • Steve Zdancewic

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

Teaching Assistants

  • Lef Ioannidis

    office hours: Monday 12:30-1:30pm, Location: see Piazza

  • Stephen Mell

    office hours: Wednesday 3:30-4:30pm, Location: see Piazza

  • Sumanth Shivshankar

    office hours: Tuesday 4:30-5:30pm, Location: see Piazza


Homework Projects

  • HW1: Hellocaml!

    • Due: Wednesday, January 26th at 11:59pm

  • HW2: X86lite simulator

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

  • HW3: LLVMlite backend

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

  • HW4: Oat language compiler v.1

    • Due: Wednesday, March 23rd at 11:59pm

  • HW5: Oat language compiler v.2

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

  • HW6: Program Analysis & Optimizations

    • Due: Wednesday, April 27th 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