Domain-specific Languages for Graphics, Imaging, and Beyond


Pat Hanrahan

Jonathan Ragan-Kelley

Zach DeVito

Gilbert Bernstein (TA)

Course Slack group

Lecture Schedule

TTh 1:30–2:50 in Gates 392

9/22 – Introduction


Please take the course survey.

9/24 – Overview


9/29 – Introduction to Lua

10/1 – Introduction to Terra

Assignment 1 - due 10/13

Assignment 1 is to build a compiler for regular expressions using Lua and Terra. The starter code and assignment description is in the course GitHub org. When you’re ready to start, start the template repo for your submission by following this invite link (you’ll need to be logged into your GitHub account).

Update: Assignment 1 reference solution

The repository is now private, but if you’re logged in as yourself on GitHub you can see the reference solution to assignment 1 as REFregex.t.

10/6 – Designing intermediate representations

10/8 – IR design, transformations, and code generation

10/15 – How to read a research paper

Read the following paper on Halide.

Think about it critically using the web site on critical thinking as a guide. What are the goals of the work, what is the specific problem being solved, what are the assumptions behind the work, are there new concepts or algorithms in the paper, what is the proposed solution, what evidence is given that the solution works, what interpretation or inference is done in support of the conclusions, and finally, what are the implications and consequences of this research. Pat will lead a discussion of the paper in class. Be prepared to orally answer the above questions. Consult the guide for additional questions that might pertain to this work.

Assignment 2 - due 10/27

Assignment 2 walks you through the process of optimizing an image processing language through IR design and transformations. The starter code is availiable on the course github page. When you are ready to get started follow this invite link.

10/20 – Halide, Jonathan Ragan-Kelley

10/22 – Final Project Brainstorming

Great work on your own ideas and discussion during class! Our initial suggestions are here.

10/27 – Guest lecture: Shading Languages, Tim Foley, NVIDIA

10/29 – Guest lecture: Simulation Languages, Gilbert Bernstein

11/3 — Writing Fast Code, Jonathan

11/5 – Macros, Pat


Background Readings:


11/10 — Guest lecture: Torch, Ronan Collobert, Facebook

11/12 — Initial Project Proposals

11/17 — Guest lecture: Procedural modeling and design using probabilistic programming languages, Daniel Ritchie


11/19 — Work on projects during class

11/24, 11/26 — Thanksgiving Break

12/1 — How to Write a (Systems) Paper, Pat

12/3 – Final Project Presentations

12/8 – Final Project Paper Due