Westley Weimer

Associate Professor of Computer Science
423 Rice Hall
O: 434-924-1021, F: 434-982-2214

Moving to the University of Michigan

I have accepted a tenured full-professor position at the University of Michigan in Ann Arbor starting in 2017! I will only be at UVA as a half-time employee during the Spring of 2017.

Graduate Program and Graduate Studies

I have previously served as the chair of the CS Graduate Program Committee and the SEAS Graduate Studies Committee. During the Spring of 2017 I will be working to transfer relevant institutional knowledge to the next chairs. In the interim, please direct questions as follows:


CS 1120
Introduction to Computing
CS 4610/4501
Programming Languages
CS 6610
Programming Languages
CS 8561
Programming Languages Topics
Udacity CS 262
Building a Web Browser

Graduate Student Job Guide

Claire Le Goues, Zachary Fry and I have written an article explaining the CS job search process for graduate students (e.g., teaching and research statements, interviews, offers, negotations, academia and industry) and our experiences with it from 2005 to 2014.


My current main research interests relate to consciousness, time, and advancing software quality by using both static and dynamic programming language approaches. On the purely-CS side, 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 programs, and program correctly.

Current major research interests and areas:

  • Consciousness and Time. I believe consciousness to be primal, elevant, inadequately explained, and amenable to experimentation: to me, it is the most interesting of the big problems. I believe the experience of consciousness over time to be a hard problem (in a sense akin to NP-Hard) in that solving it would allow us to solve most other problems. While these are not typically research problems considered in computer science, interested prospective graduate students are encouraged to compare my thoughts on the subject to their own.
  • GenProg: Evolutionary Program Repair. We have pioneered techniques to synthesize repairs for defects in legacy programs using only standard testcases (no code annotations or formal specifications). We use special program representations and modification operators to search through the space of candidate patches until one is found that passes all of the testcases but does not demonstrate the error. This work is a collaboration with Stephanie Forrest and Claire Le Goues.
  • Synthesis and Analysis of Non-Executable Artifacts. Source code is not the only artifact of the software development process. We have designed algorithms and conducted human studies related to synthesizing program documentation, understanding software readability, dealing with defect reports, and predicting run-time execution frequency.
  • Improving Software Properties. Beyond functional correctness, a number of other properties are important to software. Aspects as diverse as power consumption, maintainability, and visual fidelity are all important in some domains. We have developed techniques to improve or trade-off these non-functional properties in software automatically.


Research Group Members and Theses

Emeritus and Honorary Research Group Members

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