Ben Liblit
For
Spring 2013
I
am
teaching
CS 638: Software Engineering.
This
undergraduate
course meets
Tuesdays and Thursdays, 2:30 PM – 3:45 PM
in room
1257 CS.
Spring 2013
office hours are
Fridays, 1:30pm – 2:30pm.
Unscheduled drop-in visitors are also usually welcome. I am in
room 6357 of the Computer Science
building. Come on by and say hello!
I am an associate professor of computer science, specializing in
software engineering and programming languages. My work in this
area began with a pioneering four-year field study on the
practice of programming. (That is, I was an actual grownup with
a real job as a software engineer.) Today it is the challenges
and needs of the professional programmer that inspire my
research.
My research team:
| Current Students |
Former Students |
|
|
- Alex Diedrich, now at University of Wisconsin–Madison
- Anne Mulhern, Ph.D., now at University of Massachusetts–Lowell (co-advised with Charles Fischer)
- Andrew Weinrich, now at Spencer Stuart
- Cindy Rubio González, Ph.D., now at University of California, Berkeley
- David Clipson, now at University of Wisconsin–Madison
- Garrett Kolpin, now at Thomson West
- Jason Fletchall, now at Intuit
- Lena Olson, now at University of Wisconsin–Madison
- Marina Polishchuk, now at Microsoft
- Piramanayagam Arumuga Nainar, Ph.D., now at Oracle Corporation
- Rachael McCormick, now at University of Wisconsin–Madison
- Steve Jackson, now at University of Wisconsin–Madison
- Suhail Shergill
|
Bug Isolation in an Imperfect World
How many times has your computer crashed this month? My current
focus is on improving software quality in a world where bugs are
a fact of life. I seek practical ways to use program analysis,
machine learning, and other techniques to understand and fix
bugs in the real world.
Statistical Debugging and Cooperative Bug Isolation
- Statistically Debugging Massively-Parallel Applications,
technical report 2013
- Instrumentation and Sampling Strategies for Cooperative Concurrency Bug Isolation,
OOPSLA 2010
- Adaptive Bug Isolation,
ICSE 2010
- Cooperative Crug Isolation,
WODA 2009
- Holmes: Effective Statistical Debugging via Efficient Path Profiling,
ICSE 2009;
technical report 2008
- Reflections on the Role of Static Analysis in Cooperative Bug Isolation,
SAS 2008 invited paper
- Statistical Debugging Using Latent Topic Models,
ECML 2007
- Statistical Debugging Using Compound Boolean Predicates,
ISSTA 2007
- Cooperative Bug Isolation: Winning Thesis of the 2005 ACM Doctoral Dissertation Competition,
LNCS volume 4440
- Statistical Debugging: Simultaneous Identification of Multiple Bugs,
ICML 2006
- Path Optimization in Programs and its Application to Debugging,
ESOP 2006
- BTrace: Path Optimization for Debugging,
technical report 2005
- Scalable Statistical Bug Isolation,
PLDI 2005
- The Open Source Proving Grounds,
Bugs 2005
- Cooperative Bug Isolation,
doctoral dissertation, 2005
ACM Doctoral Dissertation Award
- Public Deployment of Cooperative Bug Isolation,
RAMSS 2004
- Statistical Debugging of Sampled Programs,
NIPS 2003
- Bug Isolation via Remote Program Sampling,
PLDI 2003
- Sampling User Executions for Bug Isolation,
RAMSS 2003
The Cooperative Bug
Isolation Project is putting many of the above ideas to work
in a large scale, real world deployment. When theory collides
with practice, fun things happen.
Error Propagation
Other Bug Hunting
- Automated Concurrency-Bug Fixing,
USENIX OSDI
2012
- Enforcing Murphy’s Law for Advance Identification of Run-time Failures,
USENIX ATC 2012
- Murphy: An Environment for Advance Identification of Run-time Failures,
technical report 2012
- Automated Atomicity-Violation Fixing,
PLDI 2011
- Better Debugging via Output Tracing and Callstack-Sensitive Slicing,
TSE 2010
- Scalable Temporal Order Analysis for Large Scale Debugging,
SC 2009
- Lessons Learned at 208K: Towards Debugging Millions of Cores,
SC 2008
- Effective Slicing: A Generalization of Full and Relevant Slicing,
technical report 2008
- Heap Typability is NP-Complete,
technical report 2007
- Dynamic Heap Type Inference for Program Understanding and Debugging,
POPL 2007
- WhatsAt: Dynamic Heap Type Inference for Program Understanding and Debugging,
technical report 2006
- Building a Better Backtrace: Techniques for Postmortem Program Analysis,
technical report 2002
Languages for Scientific Computing

Your supercomputer is only as good as the code you’re running
on it. As a member of the Titanium
project I developed a formal basis for understanding the behavior of
distributed data with applications in language design, algorithm
development, programming, and optimization.
Odds and Ends

I’ve also written a few things about other facets of
programming and program analysis.
- Analyzing Memory Ownership Patterns in C Libraries,
ISMM 2013
- A Router Primitive Approach for Building Diverse Network Services,
COMSNETS 2012
- Automatic Generation of Library Bindings Using Static Analysis,
PLDI 2009
- Code Sandwiches,
technical report 2008
- An Operational Semantics for LogTM,
technical report 2006
- Extracting Output Formats from Executables,
WCRE 2006
- Supporting Nested Transactional Memory in LogTM,
ASPLOS XII
/
ASPLOS 2006
- Cognitive Perspectives on the Role of Naming in Computer Programs,
PPIG 2006
- Tool Support for Proof Engineering,
UITP 2006
- Estimating the Impact of Scalable Pointer Analysis on Optimization,
SAS 2001
- Transformation of Prolog Programs to Perform Update in Place: A Prototype Code Synthesizer,
undergraduate honors thesis, 1993