The qualifying examination is the grueling test that all PhD. students must pass before starting their theses. I had mine last Tuesday.
All qual exams are different. My friends in Systems had a huge reading list; a friend in Numerical Methods had to be able to answer almost any question on computer science theory. For the software engineering qual, I had to present and critique two papers in detail and be able to answer almost any question about the papers' main ideas and related work.
My two papers were the following:
- The JastAdd Extensible Java Compiler by Torbjörn Ekman and Görel Hedin in OOPSLA 2007
The JastAdd Extensible Java Compiler is a high quality Java compiler that is easy to extend in order to build static analysis tools for Java, and to extend Java with new language constructs. It is built modularly, with a Java 1.4 compiler that is extended to a Java 5 compiler. Example applications that are built as extensions include an alternative backend that generates Jimple, an extension of Java with AspectJ constructs, and the implementation of a pluggable type system for non-null checking and inferencing.
The system is implemented using JastAdd, a declarative Java-like language. We describe the compiler architecture, the major design ideas for building and extending the compiler, in particular, for dealing with complex extensions that affect name and type analysis. Our extensible compiler compares very favorably concerning quality, speed and size with other extensible Java compiler frameworks. It also compares favorably in quality and size compared with traditional non-extensible Java compilers, and it runs within a factor of three compared to javac.
- ILEA: Inter-Language Analysis across Java and C by Gang Tan and Greg Morrisett in OOPSLA 2007
Java bug finders perform static analysis to find implementation mistakes that can lead to exploits and failures; Java compilers perform static analysis for optimization. If Java programs contain foreign function calls to C libraries, however, static analysis is forced to make either optimistic or pessimistic assumptions about the foreign function calls, since models of the C libraries are typically not available.
We propose ILEA (stands for Inter-LanguagE Analysis), which is a framework that enables existing Java analyses to understand the behavior of C code. Our framework includes: (1) a novel specification language, which extends the Java Virtual Machine Language (JVML) with a few primitives that approximate the effects that the C code might have; (2) an automatic specification extractor, which builds models of the C code. Comparing to other possible specification languages, our language is expressive, yet facilitates construction of automatic specification extractors. Furthermore, because the specification language is based on the JVML, existing Java analyses can be easily migrated to utilize specifications in the language. We also demonstrate the utility of the specifications generated, by modifying an existing non-null analysis to identify null-related bugs in Java applications that contain C libraries. Our preliminary experiments identified dozens of null-related bugs.
I will learn if I passed in a week or two. I feel my presentations went well, though I am still reliving the questions that I was unable to answer.
Update: 3/5/08
I passed unconditionally! I am officially a PhD. student.
Anonymous Coward Says:
You become a PhD candidate after you pass your prelims at UIUC. You transform form a “graduate student” to a “PhD student” when you pass your quals.