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


I am teaching CS 6610 — Graduate Programming Languages on Mondays and Wednesday from 2pm to 3:15pm in Rice 340.

Office Hours: Thursdays 11am to Noon, Rice 423.
CS 1120
Introduction to Computing
CS 4610
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