Instructor
Eric Koskinen    office hours: Monday 4-5pm, Thursday 2:30-3:30pm, Zoom (link in Canvas)
Teaching Assistants
Leo Ouyang
    office hours: Wed/Fri 3:15-4:15, Zoom (link in Canvas)
Michael Chunko
    office hours: Thursday 2-4pm, Zoom (link in Canvas)
Course information:
  time: T 6:30-9:00pm  room: (Zoom link in Canvas)
  Canvas
Prerequisites: CS334 and (CS590 or CS570 or CS385 or CS182)
Topics:
- Lexing/Parsing
- Code generation
- Semantic analysis
- Optimization
- Run-time support
Reading and References
The following books contain useful course material, and much of the lecture content is derived from them (and other sources).
- Compilers (2nd edition) by Aho, Lam, Sethi, and Ullman
- Advanced Compiler Design and Implementation by Muchnick
- Modern Compiler Implementation in ML by Appel
- llvm.org
- Real World OCaml
- OCaml Programming Style Guide
- The Caml Web Site, particularly the documentation and users' manual and the standard libraries
- OCaml.org
- Developing Applications with Objective Caml by Emmanuel Chailloux, Pascal Manoury and Bruno Pagano
- Introduction to Objective Caml by Jason Hickey
Projects: Building a Compiler
There are several 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.
CS 516 Toolchain - instructions for getting access to the tools you need to complete course assignments.
- Homework 1: Hellocaml
Due: Thursday, February 11th at 11:59pm - Homework 2: X86lite
Due: Thursday, February 25th at 11:59pm - Homework 3: Compiling LLVMlite
Due: Thursday, March 11th at 11:59pm - Homework 4: Compiling Oat v.1
Due: Tuesday, April 6st at 11:59pm - Homework 5: Full Oat
Due: Thursday, April 22nd at 11:59pm - Homework 6: Dataflow Analysis and Register Allocation
Due: Tuesday, May 11th at 11:59pm
Grading Criteria
- 2% Attendance and participation
- 28% Quizzes
- 70% Course projects
Lecture Slides and Notes
The slides in these lectures have been adapted (with permission) from course materials provided by Steve Zdancewic at University of Pennsylvania and, transitively, by Andrew Myers at Cornell University and Greg Morrisett at Harvard University.