Topics and schedule:


31    Course introduction
        Knights landing
        Bit Twiddling Hacks
        Hackers Delight


5      Autotuning: ATLAS and BLAS generation (Pingali)
        Link to ATLAS
        Is Search Really Necessary to Generate High-Performance BLAS?

7      Capri: Proactive Control of Approximate Programs (Pingali)

Program synthesis from algorithmic specifications

12    FFTW (link to the site):  The Design and Implementation of FFTW3 (Yongkee Kwon)

14    Spiral (link to the site):  SPIRAL: Code Generation for DSP Transforms (Michael He)

19    Prefix-scan on GPUs (Michael He)

21    Tensor contraction engine (link to the site): Synthesis of High-Performance Parallel Programs for a Class of Ab Initio Quantum Chemistry Models (Ian Hendrickson)

26    Stencil compilers: Pochoir The Pochoir Stencil Compiler (Sepideh Maleki)

28    Operator formulation of algorithms: The Tao of Parallelism in Algorithms (Pingali)


3      Elixir:
        Elixir: A System for Synthesizing Concurrent Graph Programs
        Synthesizing Parallel Graph Programs via Automated Planning
        The dissertation: Elixir: Synthesis of Parallel Irregular Algorithms (Ian Hendrickson)

Program synthesis from incomplete programs

5      SAT and SMT solvers: Lecture 3 and 4 from (Esha Chokse)

10    Super-optimizer: Denali
        The first superoptimizer paper: Superoptimizer -- A Look at the Smallest Program
        Preliminary report: Denali: A Goal-directed Superoptimizer   
        Denali-2 superoptimizer: Denali: A Practical Algorithm for Generating Optimal Code (Sepideh Maleki)

12    Sketching for finite programs: Combinatorial Sketching for Finite Programs (Ahmet Celik)

17    Sketching for stencils: Sketching Stencils (Joshua Landgraf)

19    Sketching concurrent data structures: Sketching Concurrent Data Structures (Ahmet Celik)

24    QBF (Yan Pei) and project discussion

26    Optimizing synthesis with metasketches: Optimizing Synthesis with Metasketches (Shikhar Singh)

Programming by example

31    Automating string processing in spreadsheets using input-output examples (Pengyu Nie)


2    Spreadsheet table transformations from examples (Pengyu Nie)

7      Flashextract: a framework for data extraction by examples (Shikhar Singh)

9      Synthesizing data structure transformations from input-output examples (Yan Pei)

14      Synthesizing transformations on hierarchically structured data (Yan Pei)

Informal specifications to programs

16     Course project progress report (10min)

21     SQLizer: query synthesis from natural language (Joshua Landgraf)

23 Thanksgiving

28    Program synthesis using natural language (Yongkee Kwon)

30    Kalman Filter (Yan Pei)
   Submit version
   Complete version


5    Superoptimizor (Shikhar)


Course project important dates:

Oct 27th, choose an idea

Nov 14th, short 1-page progress report

Nov 16th, in-class presentation

Dec 11th (Monday), project presentation (25min)

Dec 12th (Tuesday) noon, 10-page paper