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).

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

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:

Macro Definitions in Lisp, Timothy Harris. Original technical memo proposing macros.

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:

The Design and Implementation of Probabilistic Programming Languages, Noah Goodman and Andreas Stuhlmuller. The first three chapters of this online tutorial cover WebPPL, a Javascript-based probabalistic programming languages.

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