Bill McCloskey
517 Soda Hall
Berkeley, CA, 94720
billm at cs dot berkeley dot edu

Research

I am a graduate student at UC Berkeley in programming languages. My advisor is Eric Brewer. I am interested in applying program analysis techniques to systems programming. I work with a group of people at Berkeley to design a language and a set of tools to help write better systems. There is a somewhat outdated website describing out work. We have written a paper that includes a more recent summary of what we're trying to accomplish.

Related to this project, I worked on a tool to eliminate the C preprocessor from C programs and to replace it with a more analyzable, less error-prone substitute. Our paper describes this tool in more detail. In brief, the tool makes it as easy to write a program transformation for C as it is to write one for Java, which lacks a preprocessor.

Most recently, I've been working on a tool that allows programmers to use atomic sections as an efficient concurrency control mechanism for C programs. This paper describes our results.

In the future, I'm interested in using practical shape analysis techniques to infer deeper properties about systems programs. Many of these programs use a simple, uniform set of data structures. Determining the shape of these objects seems like it ought to be a tractable problem.

Software

I wrote a Linux program called Xword to work on crossword puzzles. It reads and writes the format used by The New York Times. Check it out.

Recently I've been working on a web site with AJ Shankar for solving Sudoku puzzles. It's called Sudoku Slam. It has a lot of advanced features that I haven't seen on other web Sudoku sites, such as hints, bookmarks, undo, and PDF printing.

I've also created a simple replacement for make called memoize. However, it is not Yet Another Make Replacement. Rather than forcing you to learn a new language for writing dependencies and commands, it permits you to simply write a build script--a list of commands--in the language of your choice (say Python, or the shell). It takes care of incrementalizing this script so that only the modified files get built. See the memoize page for more information.

Publications

Last modified: Fri Jun 13 2008