440 Huntington Avenue
308 West Village H
Boston, MA 02115
- MSCS, Indiana University
- BSCS, Indiana University
William J. Bowman is a PhD student studying computer science at Northeastern University’s Khoury College of Computer Sciences, advised by Professor Amal Ahmed. His research involves compilers, type systems, and meta-programming with a goal of eliminating compiler-introduced bugs and making code that is easier to read, write, and edit. He earned both his bachelor’s degree and master’s degree in computer science from Indiana University.
- Hometown: Boston, Massachusetts
- Field of Study: Computer Science
- PhD Advisor: Amal Ahmed
What are the specifics of your graduate education (thus far)?
I am a PhD candidate studying programming languages. My interests include compilers, type systems, and meta-programming.
What are your research interests?
I currently study compiler correctness for typed languages. Typed languages promise strong guarantees for programmers to use while reasoning about their programs. I want to make these guarantees meaningful by ensuring compilers do not ignore them by introducing subtle bugs and security vulnerabilities in favor of small improvements in speed.
What’s one problem you’d like to solve with your research/work?
I would like to eliminate compiler bugs. Programmers should never have to worry that the compiler is introducing errors in their code. Of course, I doubt I will solve this myself, but if I can make even a small contribution to the solution, I will call my work a success.
What aspect of what you do is most interesting?
My favorite undergraduate course was the compilers course. We wrote an optimizing Scheme to x86 compiler. Now, an interesting part of my work is discovering how every compiler pass must change a little so we can prove that it preserves high-level reasoning. Some of these changes are merely to support proofs, while others expose glaring assumptions that compiler developers have made about what matters when compiling code.
What are your research or career goals, going forward?
I want to make programs easier to read and write. I want to make it easy to write a program and know it will never crash. I want to make it easy to open a program’s source code and make a change without ever needing to consult the original developer. I want most programmers to never know there is a real machine with physical limitations running their code.