Lecture Schedule
TTh 1:30–2:50 in Gates 392
9/22 – Introduction
Readings:
Please take the course survey.
9/24 – Overview
Readings:
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/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
- Gilbert Louis Bernstein, Chinmayee Shah, Crystal Lemire, Zachary DeVito, Matthew Fisher, Philip Levis, Pat Hanrahan. Ebb: A DSL for Physical Simulation on CPUs and GPUs
- Fredrik Kjolstad, Shoaib Kamil, Jonathan Ragan-Kelley, David I.W. Levin, Shinjiro Sueda, Desai Chen, Etienne Vouga, Danny M. Kaufman, Gurtej Kanwar, Wojciech Matusik, Saman Amarasinghe. Simit: A Language for Physical Simulation
11/3 — Writing Fast Code, Jonathan
11/5 – Macros, Pat
Readings:
- Chapter 7, Macros
“Teach yourself Scheme in Fixnum Days” by Dorai.
This chapter covers classic lisp macros using defmacro.
This free online book is a good, quick introduction to scheme.
- Fear of Macros.
This short tome covers scheme macros.
Read to Chapter 3 for a quick introduction to define-syntax.
The remaining chapters cover more advanced features of scheme macros.
Background Readings:
- On Lisp, Paul Graham.
This book covers more advanced Lisp programming techniques,
and has extensiion coverage of macros.
- Let over Lambda, Doug Hoyte.
Another book making the case that many of the programming techniques
common in Lisp should be resurrected.
References:
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
Readings:
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