Westley Weimer

Associate Professor of Computer Science
423 Rice Hall
Office Hours: Wednesdays, 2:30-3:30
O: 434-924-1021, F: 434-982-2214
lastname@virginia.edu

Sabbatical, Calendar Year 2013

I am on sabbatical for Calendar Year 2013.

PhD Student Fellowship Opportunity

Mark Harman, Peter O'Hearn and I are beginning a joint project on search-based software testing, formal verification, and automated program repair. University College London is offering a prestigious fully-funded student bursary (a fellowship covering fees and living support for four years) starting September 2013. Applications are due by March 31st. If you are applying to graduate school and are interested in at least one of those areas, I strongly encourage you to apply for this opportunity!

Teaching

  • I am not teaching, and have no set office hours, during Spring or Fall of 2013.

Free On-Line Education

Previous Courses and Evaluations

Research

My main research interest lies in advancing software quality by using both static and dynamic programming language approaches. I am particularly concerned with automatic or minimally-guided techniques that can scale and be applied easily to large, existing programs. I believe that finding bugs is insufficient, and I also work to help programmers address defects, understand error reports, and program correctly. I am also interested in designing languages and language features to help prevent errors.

I believe in using concepts from other areas of computer science to help address software quality problems. I have had good luck combining elements of databases (transactional concepts and analyzing clients), systems (OS and networking), and machine learning (clustering and classification) with my research.

Current major research thrusts:

  • GenProg: Evoluationary Program Repair. With Stephanie Forrest, we have automatically generated repairs for legacy C programs using only standard testcases (no code annotations or formal specifications). We use genetic proramming and custom progrom representations and genetic operators to generate program variants until we find one that passes all of the testcases but does not demonstrate the error.
  • The Analysis of Non-Executable Artifacts. Source code is not the only artifact of the software development process. We propose to model, analyze and generate program documentation, software readability, software complexity, and run-time execution frequency.
  • The Analysis of String Variables. We are interested in decision procedures and formalisms to help statically predict that values of string variables. We are interested in generating indicative testcases for code injection vulnerabilities and cross-site scripting, finding likely invariants or policies for string variables, and verifying the soundness program transformations in the presence of string variables.
  • The Helix Project. With John Knight, Dave Evans, Jack Davidson, and Anh Nguyen-Tuong I'm working on the Helix project, a self-regenerative software security architecture for defending computer systems against well-funded and determined attackers. Helix will proactively monitor, adapt and reconfigure software components to present attackers with an ever changing system, thus dramatically raising the expertise and resources required for an attack.
Previous research thrusts:
  • Defect Reporting and Triage. Software maintenance is centered around defect reports, but up to 35% of reports are duplicates or otherwise invalid. We are interested in automatically filtering away invalid bug reports, categorizing duplicate reports with their parents, and generally reducing the effort required for software defect triage.
  • User-Visible Errors in Web Applications. We propose to reduce the costs of testing web applications by studying and modeling errors in this domain. We are interested in automatically determining if changes in web application output indicate errors, and to model and measure the consumer-perceived severity of these faults.
  • The Echo Project. With John Knight, we are interested in a new approach to software verification, which makes formal verification practical by extracting high-level specifications from low-level annotations and by transforming programs to make them easier to verify.

Publications

Research Group Members and Theses

Emeritus and Honorary Research Group Members

Other Trivia

I have written an article explaining the CS job search process (e.g., teaching and research statements, interviews, offers) and my experiences with it. It is available to grad students on request.

Others create wit and wisdom, I just collect it. In my copious spare time, I play games and do other things. Our local bridge reference card is also available.

Ever wanted a free unix utility to split a PDF file (e.g., break pages 10-20 of big.pdf out into small.pdf)? After searching through a bunch of hideous non-working shareware utilities, I found that standard ghostscript (gs) will do the job. Here's a free unix shell script that invokes all of the right magic options for you. I use this to split apart NSF grant proposals into the required separate files (e.g., description here, references there).

Curious about the secret lives of PL profs? Indicative boring hiking photos are available.

A student rendering of me is available, as is a fondant sculpture.

Wes Weimer, Fall 2009
 
CS415 Spring 2007 Class Fencing
 
CS 615, Halloween 2008