Dr. Cooper's research has looked at a wide variety of problems in
the translation and optimization of programming languages.
Cooper and his group have worked on problems as diverse as
interprocedural data-flow analysis (summary problems, parameter
aliasing, and pointer disambiguation), on classical scalar optimization
(value numbering, combining optimizations, strength reduction, register
promotion of pointer-based values, code compression, inline substitution,
strength reduction, algebraic reassociation, ...), on register
allocation (in Chaitin-Briggs, Chow, and Koblenz-Callahan style allocators),
on instruction scheduling, and on intraprocedural analysis (SSA construction,
global data-flow algorithms, CFG construction, ...).
For the last fifteen years, Cooper and his group looked at fundamental ways
to change the structure and behavior of compilers. That work has variously
been called "adaptive compilation" and "compiler-based autotuning."
His current interests include
Flyweight runtime optimization
Better mechanisms for spill choice and spill placement in global
register allocators
Portable, efficient, and automatic detection of critical
performance parameters of processors and systems.
Engineering a Compiler
With Linda Torczon, he has written a textbook on compiler construction,
Engineering A Compiler, published by Elsevier Morgan-Kaufmann
The second edition appeared in early 2011; the
online errata page lists some of the
inevitable errors.
Elsevier Morgan-Kauffman makes available material for teachers, through its
sales reps and its
companion web site.
A third edition is in preparation.
Administrative Duties
From July 1, 2002 to June 30, 2008, he was chair of Rice's
Computer Science Department.
While that post has its own psychic rewards, it distracted him from
research and teaching.
Any queries regarding the Department should be addressed to the current
chair, Dr. Vivek Sarkar.
Since July 1, 2012, Cooper has served as Associate Dean for Research
of the Brown School of Engineering. In that capacity, he advises the
Dean and the faculty of the school on matters of research and policy.
Publications
A complete set of publications will appear on this page sometime soon.
Courses Taught
Comp 412:
Rice's undergraduate course in compiler construction.
Materials from the course are available in PDF format on the web.
Full PowerPoint is available from the publisher of
Engineering A Compiler, Second Edition (see above)
Comp 512:
Rice's graduate course in classical optimization has a focus on scalar
optimization---that is, techniques that improve uniprocessor performance.
Comp 210: (no longer offered) Rice's version of Matthias Felleisen's
introduction to programming course, taught in Scheme
Comp 200: Principles of Computing for Social Science and Humanities;
Under Cooper, the course focused on algorithmics and included sections
on computability, search, and public-key encryption.
Comp 310: Rice's old, junior level course on team programming.
And, as happens over thirty years, Cooper has done guest lectures in
several other courses ...
Other Interests
Anne and Charles
Duncan Hall; this "unofficial" web site tries to answer many
of your questions about Duncan Hall, from the perspective of someone
who had an inside view of the design and construction. It includes
some of the best lies that tour guides tell about the building.