CMSC 32001
Topics in Programming Languages
Autumn 2017

General Information

Instructor: John Reppy
Ryerson 256
Meeting time:   Friday 1:00-3:00
Location: Ry 255 (most weeks)


The focus of this seminar will be on Automated Tuning of Compilers, with a particular emphasis on using Machine Learning techniques to guide program optimization.


The approach that we will take in this course is to identify a given class of optimizations and a collection of papers related to those optimizations, and then to discuss the papers in a group.

Branch prediction

The first topic will be static branch prediction, which is the problem of statically identifying whether a conditional branch is likely to be taken or not. We will start with some classic papers on the topic and then look at one or two AI-based approaches.

One other paper that is probably worth looking at, since the Desmet et al paper builds on it is
Evidence-Based Static Branch Prediction Using Machine Learning (TOPLAS 19:1, 1997)
by Brad Calder et al.

Meta Optimization

This is a catch-all for a wide spectrum of program properties and compiler optimizations. A 1991 PLDI paper by Wall looked at predicting program behavior from profiles, while a 2003 PLDI paper described a range of compiler optimization techniques that could be enabled by machine learning.

Compiler Heuristics

This week we will look at two examples of compiler heuristics.


This week we will look at two papers about intelligent compilers.

More compilers

Another paper about autotuning compilers.


Last revised: November 13, 2017