Computer-Aided Programming @ Rice
The vision of Computer-Aided Programming is to
use the power of automatic reasoning to simplify the task of programming.
Here, rather than manually reasoning
about programs, the programmer uses a program verifier to automatically find proofs
program correctness or incorrectness. Rather than directly coding up executable programs, the
programmer writes a specification of the structure and function of a program, letting
an algorithm for program synthesis generate correct low-level code.
All this may sound too good to be true, as
verification and synthesis are easily seen to be as hard as the Halting
for Turing machines.
However, over the last few decades, our field has developed many
tools that either solve these problems approximately,
or alternatively, solve them exactly for important classes of programs. Some of
these tools are now routinely used by program designers.
Collaborators at Rice
Srinivas Nedunuri (postdoc
2012-14, now at
Roberto Lublinerman (Ph.D. 2012, now at Google);
Edwin Westbrook (postdoc
2011-13, now a researcher at Kestrel Institute)
We are hiring! Funding is now available for Ph.D.
advisees as well as postdocs).
Prof. Chaudhuri email (swarat at rice edu) if you are interested.
Reasoning about uncertain computation.
Program smoothing and probabilistic reasoning about
See [PLDI10], [CAV11],
Statistical reasoning about program
Computer-aided mechanism design; synthesis for
Constraint-based program synthesis.
See [PLDI11] and
Logical methods for real computation.
Procedure-modular reasoning about programs.
Declarative isolation in
Look no further than here!